Хранимые процедуры и запрос в программе - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д