Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параметер Return SQL sp и ADO из VBA / 7 сообщений из 7, страница 1 из 1
26.09.2001, 06:13
    #32014661
Dmitriy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметер Return SQL sp и ADO из VBA
Подскажите, почему не возвращается параметр RETURN (всегда возвращает пустое значение (cmd.Parameters(0).Value))

CREATE PROCEDURE [DEL_ALL]
@GOD int
AS
DELETE FROM PROBA
RETURN 99

Вызываю из Excel используя ADO следующим образом:

cmd.CommandText = "del_all"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Refresh
cmd.Parameters(1).Value = 10
Set RecSet = cmd.Execute()
MsgBox (cmd.Parameters(0).Name + "=" + CStr(cmd.Parameters(0).Value))
MsgBox (cmd.Parameters(1).Name + "=" + CStr(cmd.Parameters(1).Value))

Спасибо.
...
Рейтинг: 0 / 0
26.09.2001, 06:20
    #32014665
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметер Return SQL sp и ADO из VBA
Разве есть ключевое слово в T-SQL - Return. Если хотите получить на клиенте что либо надо делать так

CREATE PROCEDURE [DEL_ALL]
@GOD int
AS
DELETE FROM PROBA
select 99 as ReturnedValue

В результате на клиенте получите рекордсет из одного поля ReturnedValue с одной записью в которой и будет Ваше значение.
...
Рейтинг: 0 / 0
26.09.2001, 06:36
    #32014668
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметер Return SQL sp и ADO из VBA
\nРазве есть ключевое слово в T-SQL - Return


Безусловно - есть...
\nExits unconditionally from a query or procedure. RETURN is immediate and complete; statements following RETURN are not executed.
Syntax
RETURN ([integer_expression])
where
integer_expression
Is the integer value returned. Stored procedures can return an integer value to a calling procedure or an application.


Как вернуть это дело в "or an application" - я, честно говоря, не знаю...
Но в "пределах сервера" это работает - "на ура":

declare @return_status int
EXECute @return_status = procedure_name
select @return_status


На крайняк - можно воспользоваться тем же советом от Genady - и получать этот @return_status - через значение рекордсета...
...
Рейтинг: 0 / 0
26.09.2001, 07:14
    #32014671
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметер Return SQL sp и ADO из VBA
В примере для ADO в BOL, есть замечательная фраза, которая почему-то дана как комментарий в самом тексте примера, а не выделена большими буквами.

"Need to close recordset before getting return and output parameters."
Т.е. закрываете recordset - получаете выходные параметры, не закрываете - используете для передачи выходных параметров дополнительные recordset-ы
...
Рейтинг: 0 / 0
26.09.2001, 07:43
    #32014673
Dmitriy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметер Return SQL sp и ADO из VBA
Опять спасибо Glory выручил!!!
...
Рейтинг: 0 / 0
26.09.2001, 08:11
    #32014675
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметер Return SQL sp и ADO из VBA
2 qu-qu
Спасибо

Дома не установлен BOL поэтому свериться не получается, а return никогда не использовал, практически всегда пользовался описанным выше способом.
...
Рейтинг: 0 / 0
01.10.2001, 11:47
    #32014726
Chicago
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметер Return SQL sp и ADO из VBA
По тексту ХП видно, что на самом деле никакой рекордсет из нее получать не надо. Поэтому вместо

set RecSet=Cmd.Execute

пишем

Cmd.Execute

и о закрытии рекордсета можно не заботиться.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параметер Return SQL sp и ADO из VBA / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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