Вот код запуска хранимой процедуры.
- Код: Выделить всё
Public ATempDB As New ADODB.Connection
Public ATempRS As New ADODB.Recordset
Public ADOCmd As New ADODB.Command
Public ADOPrm As New ADODB.Parameter
Public sParmName As String
[...]
Set ADOCmd.ActiveConnection = ATempDB
ADOCmd.CommandType = adCmdStoredProc
ADOCmd.CommandText = "SP_Add_Document"
sParmName = "Return"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, _
adParamReturnValue, , 0)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = -1
sParmName = "Comment"
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adBSTR, adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Size = 250
ADOCmd.Parameters(sParmName).Value = "some text"
Set ATempRS = ADOCmd.Execute
Dim CurDocID As Long
CurDocID = ADOCmd.Parameters("Return").Value * -1
Set ADOCmd = Nothing
Set ADOPrm = Nothing
Код сильно урезан. Реально только в этой процедуре 13 входящих параметров. Это не предел. Для каждого параметра уходит 4-5 строчек кода. Ну можно сократить до 3-4 (в зависимости от типа данных). Но представьте, какой у меня получается листинг! 4 строки на параметр умножить на 13 плюс пустые строки между ними + объявления и запуск процедуры - около 75 строк кода!! Программа использует только на данный момент около 15 процедур! Это уже больше 1000 строк! Ну скажите мне - это нормально?? Это ведь не предел. Программа в стадии разработки. А что будет потом? Я же просто запустаюсь в этом мусоре.. Неужели нельзя вызвать процедуру, которая возвращает значение, а не рекордсет, с меньшими потерями?