Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / RETURN всегда 0 ? / 11 сообщений из 11, страница 1 из 1
19.08.2002, 20:27:04
    #32044372
harrytv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
При выходе из SP в Delphi у StoredProc ptResult всегда = 0.
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT @x= 1 
SELECT @y= 2 
IF @x < @y
BEGIN
     RASERROR ('x<y'',  16 ,  1 )
     RETURN @y
END


Если
Код: plaintext
1.
2.
3.
SELECT @x= 1 
SELECT @y= 2 
RETURN @y
END

получаю @y
Почему так?
...
Рейтинг: 0 / 0
20.08.2002, 08:56:30
    #32044405
~Bazul~
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
а так попробуй

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT @x= 1 
SELECT @y= 2 
IF @x < @y
BEGIN
     RASERROR ('x<y'',  16 ,  1 )
     RETURN @y
END
 ELSE RETURN  0  
...
Рейтинг: 0 / 0
20.08.2002, 10:27:42
    #32044434
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
Получив RAISERROR, Дельфи генерит исключение, а это означает, что текущая обработка обрывается и начинает выполняться ближайший код обработки исключения. Говоря другими словами, после RAISERROR, Дельфи уже не пытается ничего получить из OUTPUT хранимой процедуры, в том числе и значение RETURN, так как занято другими вещами.
...
Рейтинг: 0 / 0
20.08.2002, 11:53:24
    #32044480
Oleg_Martynov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
Когда-то специально проверял. Результат (мой):
Да, всегда 0, если использовать BDE (TStoredProc). Если использовать ADO (TADOStoredProc) - работает, как ожидается. Т.к. это имеет место во всех версиях Дельфи - скорее всего, "особенность" взаимодействия BDE с MS SQL.
Удачи!
...
Рейтинг: 0 / 0
20.08.2002, 16:09:46
    #32044651
harrytv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
Всем спасибо.
Может перейти на ADO?. Правда год назад пробовал работать с ним. Написал тест - вызов в цикле SP заполняющую таблицу (10000 записей), получилось в 2
раза медленее чем с BDE.Верно ли это?
...
Рейтинг: 0 / 0
20.08.2002, 16:19:16
    #32044656
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
Вот это:

Получив RAISERROR, Дельфи генерит исключение, а это означает, что текущая обработка обрывается и начинает выполняться ближайший код обработки исключения. Говоря другими словами, после RAISERROR, Дельфи уже не пытается ничего получить из OUTPUT хранимой процедуры, в том числе и значение RETURN, так как занято другими вещами.

справедливо для любого механизма подключения. Хотя на ADO перейти, конечно, стоит по-любому.
...
Рейтинг: 0 / 0
20.08.2002, 20:31:16
    #32044734
harrytv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
2 Dankov
Взялся за ADO. Как только добавляю в параметры ADOStoredProc pdReturnValue - получаю exception too many argyments ... ,без него все ОК, но где мой RETURN ???
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE Update_Men
  @men_id         INT =  0 ,
  @tabnumber    INT =  0 ,
  @f	          VARCHAR( 30 ),
  @i	          VARCHAR( 30 ),
  @o	          VARCHAR( 30 ),
  @tarif             DECIMAL( 9 , 2 ) =  0 ,
  @class            INT =  0 
AS
  RETURN  100  
END

В Delphi
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with  ADOStoredProc1 do
 try
   ProcedureName:='Update_Men';
   Parameters.Clear;
   Parameters.CreateParameter('@men_id',ftInteger,pdInput, 32 , 0 );
   Parameters.CreateParameter('@tabnumber',ftInteger,pdInput, 32 , 0 );
   Parameters.CreateParameter('@F',ftString,pdInput, 32 , 0 );
   Parameters.CreateParameter('@I',ftString,pdInput, 32 , 0 );
   Parameters.CreateParameter('@O',ftString,pdInput, 32 , 0 );
   Parameters.CreateParameter('@tarif',ftFloat, pdInput, 32 , 0 );
   Parameters.CreateParameter('@class',ftInteger, pdInput, 32 , 0 );
   Parameters.CreateParameter('result', ftInteger, pdReturnValue,  32  , 0 );
....     

В чем дело,что-то я к вечеру отупел малость :-)
...
Рейтинг: 0 / 0
20.08.2002, 20:40:40
    #32044739
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
добавлять его не надо...
после execute - cmd.Parameters("return_value").....
...
Рейтинг: 0 / 0
20.08.2002, 20:49:35
    #32044741
harrytv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
Спасибо. Мир не без добрых людей :-)
...
Рейтинг: 0 / 0
20.08.2002, 20:51:04
    #32044742
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
сегодня мы вам...
завтра наоборот....
удачи....
ЗЫ... правда дельфи я не знаю... и не люблю паскаль...
но это так... к слову...
...
Рейтинг: 0 / 0
21.08.2002, 15:11:09
    #32044937
harrytv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RETURN всегда 0 ?
Однако,нужно его создавать ручками, только стоять он должен ПЕРВЫМ
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / RETURN всегда 0 ? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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