powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить из СП выходной параметр
14 сообщений из 14, страница 1 из 1
Как получить из СП выходной параметр
    #32044355
dik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dik
Гость
Привет

Никак не могу получить на VB6 из хранимой процедуры параметр
На сервере созда SP: 1 входной и 1 выходной параметр
через SQL Query Analyzer Все работает ок
а вот из кода на VB никак не могу получить выходной параметр

пример кода
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Set cmd = New ADODB.Command
cmd.CommandText =  "MySP" 
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter( "@aa" , adVarChar, adParamInput,  255 , pstrAA)
cmd.Parameters.Append cmd.CreateParameter( "@bb" , adInteger, adParamOutput, , pintBB)
Set conn = New ADODB.Connection
conn.Open  "......" 
Set cmd.ActiveConnection = conn
cmd.Execute

надо получить значение в параметр pintbb

Помогите утопающему.В доке ничего толком не нашел как работать с выходными параметрами через VB

C уважением
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044356
Denisco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Set cmd = New ADODB.Command
cmd.CommandText = "MySP"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("@aa", adVarChar, adParamInput, 255, pstrAA)
cmd.Parameters.Append cmd.CreateParameter("@bb", adInteger, adParamOutput, , pintBB)
Set conn = New ADODB.Connection
conn.Open "......"
Set cmd.ActiveConnection = conn
cmd.Execute

Я обычно делаю так,
dim SqlStr as string
SqlStr="declare @r int " & _(например)
"exec @r=MySp 'text1',10 " & _
"select @r as result "
dim rs as adodb.recordset
set rs=conn.execute StrSql
rs!result - искомый параметр...
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044357
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
cmd.Parameters.Append cmd.CreateParameter( "@bb" , adInteger, adParamOutput)
Set conn = New ADODB.Connection
conn.Open  "......" 
Set cmd.ActiveConnection = conn
cmd.Execute
pintBB = cmd.Parametr( "@bb" ).Value

Не нужно напрямую указывать переменную в которую получаете выходной параметр в Append cmd.CreateParameter
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044359
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще надо! ADO само разберётся.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Set cmd = New ADODB.Command
    cmd.ActiveConnection = conn
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText =  "MySp" 
    cmd.Parameters.Refresh
    cmd.Parametr( "@aa" ).Value =  "aa" 
    cmd.Execute
    pintBB = cmd.Parametr( "@bb" ).Value
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044361
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда адо само разбирается происходит лишнее обращение к серверу.... иэх..давненькоя я на вб не писал.....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Set cmd = New ADODB.Command
cmd.CommandText =  "MySP" 
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter( "@aa" , adVarChar, adParamInput,  255 , pstrAA)
cmd.Parameters.Append cmd.CreateParameter( "@bb" , adInteger, adParamOutput)
Set conn = New ADODB.Connection
conn.Open  "......" 
Set cmd.ActiveConnection = conn
cmd.Execute
pintBB=cmd.Parameters(( "@bb" )
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044362
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да если он и входной и выходной - adParamInputOutput
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044364
dik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dik
Гость
Спасибо за советы - но через cmd.parameters("pintbb").value - возвращает пусто :-(

пока проблему решил через возвращения значения в рекордсете (примерно как советовал Denisco) - но это не красиво как-то.. :-(
Однако повторяю - в Query Analyzer все работает ок?
может глюк ADO какой?

с уважением
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044393
dik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dik
Гость
Обнаружил такую зависимость

если сделать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
dim rs as adodb.recordset
Set cmd = New ADODB.Command
cmd.CommandText =  "MySP" 
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter( "@aa" , adVarChar, adParamInput,  255 , pstrAA)
cmd.Parameters.Append cmd.CreateParameter( "@bb" , adInteger, adParamOutput, , pintBB)
Set conn = New ADODB.Connection
conn.Open  "......" 
Set cmd.ActiveConnection = conn

rs=cmd.Execute
rs.close
pintBB = cmd.Parameters( "@bb" )

Все работает ОК
Т.е. ввел фиктивное получение рекордсета и потом закрыл его

Странно - это как-то всё...
С уважением
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044432
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
dim rs as adodb.recordset
Set cmd = New ADODB.Command
cmd.CommandText =  "MySP" 
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter( "@aa" , adVarChar, adParamInput,  255 , pstrAA)
cmd.Parameters.Append cmd.CreateParameter( "@bb" , adInteger, adParamOutput)
Set conn = New ADODB.Connection
conn.Open  "......" 
Set cmd.ActiveConnection = conn

rs=cmd.Execute
rs.close
pintBB = cmd.Parameters( "@bb" ).value

Шо так не работает?????????? Неверю
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044444
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Т.е. ввел фиктивное получение рекордсета и потом закрыл его

Странного - ничего. Значит, sp возвращает рекордсет (рекодсет может быть пустым). А чтение возвращаемых параметров возможно только после закрытия всех наборов данных.
Предположу смелое - процедура возвращает пустой рекордсет в качестве RowAffected от какого-нибудь промежуточного insert/update/delete. В этом услучае SET NOCOUNT ON в начале процедуры должно помочь.
Ну, а уж если там возвращается настоящий рекордсет, тады ой.
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044501
dik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dik
Гость
Именно как написал Maxx и работает, т.е. когда добавил
Код: plaintext
1.
rs=cmd.Execute
rs.close


процедура никакой рекордсет не возвращает
просто значение, точнее после команды insert - возвращаю значение identity

проблема в принципе решилась - спасибо всем за советы
вот тока странное поведение adodb

с уважением
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044619
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если нет возвращаемого рекордсета то ...
rs=cmd.Execute Options:=adExecuteNoRecords
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044963
dik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dik
Гость
Спасибо MiCe за подсказку с Options
рабочий вариант выглядит так (без всяких левых рекордсетов):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Set cmd = New ADODB.Command
cmd.CommandText =  "MySP" 
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter( "@aa" , adVarChar, adParamInput,  255 , pstrAA)
cmd.Parameters.Append cmd.CreateParameter( "@bb" , adInteger, adParamOutput)
Set conn = New ADODB.Connection
conn.Open  "......" 
Set cmd.ActiveConnection = conn

cmd.Execute Options:=adExecuteNoRecords

pintBB = cmd.Parameters( "@bb" ).value
...
Рейтинг: 0 / 0
Как получить из СП выходной параметр
    #32044969
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное повторюсь,но пошерсти свою ХП нехорошо когда пусотй рекордсет на клиента лезет.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить из СП выходной параметр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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