Запуск процедуры на сервере

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Запуск процедуры на сервере

Сообщение MOV » 06.07.2006 (Чт) 10:17

Oracle8
Серверная часть работает, то есть если в плюсе пускаешь процедуру, она отрабатывает, а если так:
Код: Выделить всё
Dim WithEvents CN As ADODB.Connection
Dim WithEvents RS As ADODB.Recordset


Private Sub CN_ConnectComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
    Me.Refresh
    RS.ActiveConnection = CN
End Sub

Private Sub Command1_Click()
    Set CN = New ADODB.Connection
    Set RS = New ADODB.Recordset
    CN.ConnectionString = "Provider=OraOLEDB.Oracle.1;Persist Security " & _
                        "Info=False;User ID=us; PASSwORD= asg6hty73; Data Source=MYSOURCE"
    CN.Open
    Dim a As Integer
    QueryString = "myschema.myprocedure(12345,78,1)"
    RS.Open (QueryString)
    CN.Close
End Sub


Ругается типа инвалид sql-statement, а в sqlplus нормально отрабатывает.
Предполагаю, что открытием рекордсета не очень правильно запускать процедуру - как это делать лучше?

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 06.07.2006 (Чт) 10:50

cn.execute
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 06.07.2006 (Чт) 10:59

О! спасиб. попробую

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.07.2006 (Чт) 11:11

Лучше так:

Код: Выделить всё
Public Function ORA_UPD_STATUS_SMS_MESSAGE(ByVal MessageID As Long, ByVal NewStatus As String) As Long
On Error GoTo Err_debug
Dim cmd As ADODB.Command
Dim p As ADODB.Parameters

    ' Вызов процедуры обновления статуса сообщения
    mMain.WriteWorkLog "Выполняем процедуру: CUST.UPD_STATUS_SMS_MESSAGE"
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = CN_ORA
    cmd.CommandTimeout = 20
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "CUST.UPD_STATUS_SMS_MESSAGE"
    ' Описание параметров
    Set p = cmd.Parameters
    p.Append cmd.CreateParameter("RET", adInteger, adParamReturnValue)
    p.Append cmd.CreateParameter("MessageID", adInteger, adParamInput, , MessageID)
    p.Append cmd.CreateParameter("NewStatus", adVarChar, adParamInput, 2, NewStatus)
    cmd.Execute
    ORA_UPD_STATUS_SMS_MESSAGE = p("RET").Value
lb_out:
    Set p = Nothing
    Set cmd = Nothing
    Exit Function
   
Err_debug:
    LogError "ORA_UPD_STATUS_SMS_MESSAGE"
    Resume lb_out
   
End Function


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList  
cron