Хранимые процедуры и запрос в программе - VB

Узнай цену своей работы

Формулировка задачи:

Приветствую. Заметил следующую интересную особенность. Если запрос к SQL Server делать из программы и хранить его в программе, т.е. вот так: rs.open 'SELECT * FROM table', cn, adOpenStatic, adLockReadOnly То затем без проблем можно узнать кол-во записей (rs.RecordCount). Но, если вызывать хранимую процедуру, содержащую тот же запрос: rs.open 'sp_query', cn, adOpenStatic, adLockReadOnly то количество записей вернуть невозможно. И курсор становится не статическим, а нечто вроде ForwardOnly... Как с этим бороться? ЗЫ: SELECT Count(*) не подойдет - у меня запрос на 57 строк - выполняется долго...

Решение задачи: «Хранимые процедуры и запрос в программе»

textual
Листинг программы
Private Function SMS_GetOracleMessages() As ADODB.Recordset
        '<EhHeader>
        On Error GoTo SMS_GetOracleMessages_Err
        '</EhHeader>
    Dim cmd As ADODB.Command
    Dim Rs As ADODB.Recordset
    Dim p As ADODB.Parameters
    
100     Set Rs = New ADODB.Recordset
110     Rs.CursorLocation = adUseClient
    
    
120     Set cmd = New ADODB.Command
130     cmd.ActiveConnection = modADO.GetConnectionString
140     cmd.CommandType = adCmdStoredProc
160         cmd.CommandText = 'SMS_GetOracleMessages_GAZ'
170         Set p = cmd.Parameters
180         p.Append cmd.CreateParameter('@TerminalID', adInteger, adParamInput, , mMain.TerminalID)
210     Rs.Open cmd, , adOpenStatic, adLockReadOnly
220     Set SMS_GetOracleMessages = Rs
    
    '<EhFooter>
lb_out:
230     Set p = Nothing
240     Set cmd = Nothing
250     Set Rs = Nothing
        Exit Function
 
SMS_GetOracleMessages_Err:
        LogError 'SMS_GetOracleMessages'
        Resume lb_out
    '</EhFooter>
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы