Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выходной параметр процедуры SQL / 17 сообщений из 17, страница 1 из 1
15.09.2005, 13:08:03
    #33271073
Faust
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
Привет!

Как словить выходной параметр хранимой процедуры,
и вывести его в сообщение.
...
Рейтинг: 0 / 0
15.09.2005, 13:19:46
    #33271104
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
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
15.09.2005, 14:26:39
    #33271316
Выходной параметр процедуры SQL
Код: 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
15.09.2005, 14:45:54
    #33271393
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
да ,забыл сказать, это для MSSQL
для Оракла - юзать "RET" вместо "RETURN_VALUE"
...
Рейтинг: 0 / 0
15.09.2005, 15:19:52
    #33271519
Faust
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
Всем большое спасибо!
...
Рейтинг: 0 / 0
15.09.2005, 15:35:56
    #33271570
Faust
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
Еще вопросик вот по этому коду

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
15.09.2005, 15:44:38
    #33271601
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
cmd.ActiveConnection = ?
...
Рейтинг: 0 / 0
15.09.2005, 15:52:41
    #33271627
Faust
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
Dim Conn As New ADODB.Connection
set cmd.ActiveConnection = Conn

оно равно этому.
...
Рейтинг: 0 / 0
15.09.2005, 15:54:53
    #33271634
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
FaustDim Conn As New ADODB.Connection
set cmd.ActiveConnection = Conn
оно равно этому.
А открывать Connection кто за вас будет? А ConnectionString где?
...
Рейтинг: 0 / 0
15.09.2005, 15:56:16
    #33271641
Faust
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
Conn.Open "Driver={SQL Server};" & _
"Server=TESTBAZA;" & _
"Database=Northwind;" & _
"Uid=sa;" & _
"Pwd=sa"
...
Рейтинг: 0 / 0
15.09.2005, 16:02:15
    #33271663
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
1. Один и тот же параметр нельзя устанавливать 2 раза.
2. Имя параметров на сиквеле должно начинаться с собаки.
3. Приведите в конце концов полный код, а не разрозненные куски.
...
Рейтинг: 0 / 0
15.09.2005, 16:06:52
    #33271670
Faust
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
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
15.09.2005, 17:00:31
    #33271871
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
Блин, все разжевывать надо...

Код: 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
15.09.2005, 17:45:47
    #33272003
Faust
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
Ну что ж поделаешь все с чего - то начинали
Спасибо!
...
Рейтинг: 0 / 0
16.09.2005, 09:22:03
    #33272575
Выходной параметр процедуры SQL
Вчера не успел ответить.

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
16.09.2005, 10:04:46
    #33272684
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выходной параметр процедуры SQL
2Пользователь2:
Ваши допущения потенциально не исключают возниконовения ошибок. Они, конечно, работают, но я предпочитаю изначально заложиться на корректную передачу параметров. И считаю такой подход единственно правильным.
...
Рейтинг: 0 / 0
16.09.2005, 10:11:27
    #33272711
Выходной параметр процедуры SQL
Melkiades, Ок.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выходной параметр процедуры SQL / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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