Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как показать сообщение из СП, / 4 сообщений из 4, страница 1 из 1
04.10.2005, 19:16
    #33304770
Mike Evteev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать сообщение из СП,
Имеем
Adaptive Server Enterprise/12.5.0.3/EBF 11443 ESD#4/P/RS6000/AIX 4.3.3/rel12503/1939/32-bit/FBO/Sun Sep 21 00:54:50 2003

ASP. ADO + Sybase ODBC Driver 4.10.00.60

Помогите вывести сообщение об ошибке из СП. Просто задрался уже. Ничего в своем коде не вижу криминального.

СП имеет упрощенно

set nocount on
...
if some_condition
begin
select @err_code = 99999
select @err_msg = 'bla bla bla'
end

raiserror @err_code @err_msg -- <--------- this is last line in sp


В SQL Advantage выводится

Server Message: Number 99999, Severity 16
Server 'SYBASEN20', Procedure 'insert_phone', Line 87:
bla bla bla
(return status = 0)


ASP код тоже туп до безобразия


Function GetErrorMessage(objConn)
Dim s
If ConnObj.Errors.Count > 0 Then
For Each objErr in ConnObj
If objErr.Number <> 0 Then
s = s + objErr.Description
End If
Next
End If

GetErrorMessage = s

End Function

on error resume next
....
Conn.Execute(sql)
Response.Write(GetErrorMessage(Conn))


И нифига не выводится!!!
Несколько смущает return status = 0. Но в теории... это вроде не проблема...

На стороне ASP если убрать resume, то страничка как положено показывает все ошибки и месаги.
Можно конечно работать с VBScript Err, но хотелось бы реально понять в чем проблема.
...
Рейтинг: 0 / 0
04.10.2005, 19:18
    #33304773
Mike Evteev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать сообщение из СП,
Да, в ASP пропущена строчка

GetErrorMessage = s

т.е. я не забыл вернуть результат...
...
Рейтинг: 0 / 0
04.10.2005, 20:23
    #33304871
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать сообщение из СП,
Mike EvteevASP код тоже туп до безобразия
Может быть в том то и дело? :) Но это нельзя сказать не увидев полный текст к сожалению.

А скорее всего ты не правильно вызываешь свою GetErrorMessage функцию.
Внутри одного соединения (которое в ADO-VB представлено одним экземляром ADODB.Connection) создается множество явных и неявных курсоров и подготовленных команд (в ADO-VB это ADODB.Command и ADODB.Recordset). Ошибки произошедшие во время запроса одной команды будут относится к этой команде и только к ней. В общем на каждый командный объект свой буфер ошибок. В ADO это сделано не очень прозрачно к сожалению...
В общем попробуй поиграться вот с этим и сам увидишь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
dim oConn, oCmd1, oRs
set oConn = CreateObject("ADODB.Connection")
set oCmd = CreateObject("ADODB.Command")
oConn.Open(....)
oCmd.ActiveConnection = oConn
oCmd.CommandText = "select * from t1"

set oRs = oCmd.Execute
Response.Write(oRs.ActiveConnection.Errors.Count)
Response.Write(oCmd.ActiveConnection.Errors.Count)
Response.Write(oConn.Errors.Count)
...
Рейтинг: 0 / 0
05.10.2005, 16:05
    #33306805
Mike Evteev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как показать сообщение из СП,
Спасибо за совет!
Но, это вроде не мой случай.

Впрочем, я таки нашел в чем проблема. Сраный VB, несмотря на option explicit, не отругался на переменную. Так что дело было в простой опечатке.
Пока все не вымочил и не написал построчно... :-(
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как показать сообщение из СП, / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]