powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выходной параметр процедуры SQL
17 сообщений из 17, страница 1 из 1
Выходной параметр процедуры SQL
    #33271073
Faust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Как словить выходной параметр хранимой процедуры,
и вывести его в сообщение.
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271104
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RETURN_VALUE смотри:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function AccountSetStatus(ByVal Account As String, ByVal Status As Long) As Long
Dim cmd As ADODB.Command
Dim p As ADODB.Parameters
    
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = CN
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "AccountSetStatus"
    Set p = cmd.Parameters
    p.Append cmd.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue)
    p.Append cmd.CreateParameter("@Account", adVarChar, adParamInput,  20 , Account)
    p.Append cmd.CreateParameter("@Status", adInteger, adParamInput, , Status)
    cmd.Execute , , adExecuteNoRecords
    AccountSetStatus = p("RETURN_VALUE").Value
    Set p = Nothing
    Set cmd = Nothing
    
End Function
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271316
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    Dim cmd As ADODB.Command
    Dim prm As ADODB.Parameter
    
    Set cmdByRoyalty = New ADODB.Command
    cmd.CommandText = "НазваниеХП"
    cmd.CommandType = adCmdStoredProc

    ' Входной параметр.
    Set prm = cmd.CreateParameter("InputPar", adInteger, adParamInput, ,  10 )
    cmd.Parameters.Append prm

    ' Выходной параметр.
    
    Set prm = cmd.CreateParameter("OutputPar", adInteger, adParamOutput)
    cmd.Parameters.Append prm
    
    cmd.Execute
    
    Debug.Print "Output: " & cmd.Parameters("OutputPar").Value
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271393
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ,забыл сказать, это для MSSQL
для Оракла - юзать "RET" вместо "RETURN_VALUE"
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271519
Faust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое спасибо!
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271570
Faust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросик вот по этому коду

Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter

Set cmd = New ADODB.Command
cmd.CommandText = "НазваниеХП"
cmd.CommandType = adCmdStoredProc

' Входной параметр.
Set prm = cmd.CreateParameter("InputPar", adInteger, adParamInput, , 10)
cmd.Parameters.Append prm

' Выходной параметр.

Set prm = cmd.CreateParameter("OutputPar", adInteger, adParamOutput)
cmd.Parameters.Append prm

cmd.Execute

Debug.Print "Output: " & cmd.Parameters("OutputPar").Value

При выполнении с подстановкой параметров и названия процедуры
Error
Невозможно использование подключения оно закрыто или не допускаеться в данном контексте.
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271601
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cmd.ActiveConnection = ?
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271627
Faust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim Conn As New ADODB.Connection
set cmd.ActiveConnection = Conn

оно равно этому.
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271634
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FaustDim Conn As New ADODB.Connection
set cmd.ActiveConnection = Conn
оно равно этому.
А открывать Connection кто за вас будет? А ConnectionString где?
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271641
Faust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Conn.Open "Driver={SQL Server};" & _
"Server=TESTBAZA;" & _
"Database=Northwind;" & _
"Uid=sa;" & _
"Pwd=sa"
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271663
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Один и тот же параметр нельзя устанавливать 2 раза.
2. Имя параметров на сиквеле должно начинаться с собаки.
3. Приведите в конце концов полный код, а не разрозненные куски.
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271670
Faust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim Conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim prm As ADODB.Parameter

Private Sub Command1_Click()
Conn.Open "Driver={SQL Server};" & _
"Server=TESTBAZA;" & _
"Database=Northwind;" & _
"Uid=sa;" & _
"Pwd=sа"

Set cmd.ActiveConnection = Conn
cmd.CommandText = "TEMP"
cmd.CommandType = adCmdStoredProc

' Входной параметр.
' Set prm = cmd.CreateParameter("@month", adInteger, adParamInput, , 10)
' cmd.Parameters.Append prm

' Выходной параметр.

Set prm = cmd.CreateParameter("@mess", adVarChar, adParamOutput)
cmd.Parameters.Append prm
cmd.Execute
Debug.Print "Output: " & cmd.Parameters("@mess").Value


End Sub
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33271871
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, все разжевывать надо...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Private Sub Form_Load()

    Dim Conn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim prm1 As ADODB.Parameter
    Dim prm2 As ADODB.Parameter
    
    Conn.Open "Driver={SQL Server};" & _
    "Server=TESTBAZA;" & _
    "Database=Northwind;" & _
    "Uid=sa;" & _
    "Pwd=sa"
    
    Set cmd.ActiveConnection = Conn
    cmd.CommandText = "TEMP"
    cmd.CommandType = adCmdStoredProc
    
    ' Входной параметр.
     Set prm1 = cmd.CreateParameter("@month", adInteger, adParamInput, ,  1 )
     cmd.Parameters.Append prm1
    
    ' Выходной параметр.
    
    Set prm2 = cmd.CreateParameter("@mess", adVarChar, adParamOutput,  50 )
    cmd.Parameters.Append prm2
    cmd.Execute
    
    Debug.Print "Output: " & cmd.Parameters("@mess").Value

End Sub



Код: plaintext
1.
2.
3.
create PROCEDURE TEMP @month int,@mess varchar( 50 ) output AS

	select @mess =  'mess'
GO
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33272003
Faust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что ж поделаешь все с чего - то начинали
Спасибо!
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33272575
Вчера не успел ответить.

Melkiades1. Один и тот же параметр нельзя устанавливать 2 раза.
Ты имеешь виду, что нельзя воспользоваться такой конструкцией?

Код: plaintext
1.
2.
3.
4.
5.
6.
    Set prm = cmd.CreateParameter("custid", _
      adInteger, adParamInput, ,  13 )
    cmd.Parameters.Append prm
    
    Set prm = cmd.CreateParameter("firstname", _
      adVarWChar, adParamOutput,  50 )
    cmd.Parameters.Append prm

Melkiades2. Имя параметров на сиквеле должно начинаться с собаки.
В коде, можно без.

Вот полный код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
    ' Процедура
    
    'CREATE PROCEDURE Test
    '@custid INT,
    '@firstname nvarchar(50) Output
    'AS
    'SELECT @firstname = FirstName FROM tblCustomer
    'WHERE (CustomerId = @custid)

    Dim cnn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim prm As ADODB.Parameter
    
    Set cnn = New ADODB.Connection
    Set cmd = New ADODB.Command
    
    cnn.Open "Driver={SQL Server};Server=(local);" _
      & "Database=Northwind;Trusted_Connection=Yes"
    
    Set cmd.ActiveConnection = cnn
    cmd.CommandText = "Test"
    cmd.CommandType = adCmdStoredProc
      
    ' Используем метод Append.
    
    Set prm = cmd.CreateParameter("custid", _
      adInteger, adParamInput, ,  12 )
    cmd.Parameters.Append prm
    
    Set prm = cmd.CreateParameter("firstname", _
      adVarWChar, adParamOutput,  50 )
    cmd.Parameters.Append prm
        
    cmd.Execute
    
    Debug.Print cmd.Parameters("firstname")
    
    Set prm = Nothing
    Set cmd = Nothing
    cnn.Close
    Set cnn = Nothing

To Faust.

Можно также воспользоваться более простой, но более медленной конструкцией с использованием метода Refresh.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    ' Используем метод Refresh.
    
    cmd.Parameters.Refresh
    cmd.Parameters("@custid") =  13 
    
    cmd.Execute
    
    Debug.Print cmd.Parameters("@firstname")
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33272684
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Пользователь2:
Ваши допущения потенциально не исключают возниконовения ошибок. Они, конечно, работают, но я предпочитаю изначально заложиться на корректную передачу параметров. И считаю такой подход единственно правильным.
...
Рейтинг: 0 / 0
Выходной параметр процедуры SQL
    #33272711
Melkiades, Ок.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выходной параметр процедуры SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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