Передача параметров в хранимую процедуру
в свойстве формы Входные параметры формы
синтаксис:
@Имя_переменной SQL_тип_переменной = имя_локального_поля_данных_или_пользовательская_функция
Прим:
В формах способ работает только если не указаны значения параметров по умолчанию
SQL_тип_переменной можно не указывать
@myvar int = GetMyVar()
@myvar = GetMyVar()
@myvar = Forms!МояФорма!КонтролФормы
@mydate = fix(VBDATE) (во вх. параметрах формы)
@mydate = fix(VBDATE)-2 (кроме вх.параметров формы - при программном формировании рекордсета)
через пробел после имени процедуры и каждый параметр в порядке их описания в процедуре - через запятую:
Dim rst As New ADODB.Recordset
Rst.Open "exec Имя_ХранПр '" & Me.MyString & "', " & Me.MYINT2 & ", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
в данном примере из полей формы данные передаются в процедуру , открываемую рекордсетом. Так как Me.MyString при передаче имеет строковый тип - добавлены одинарные кавычки
в простейшем виде строка имеет вид
rst.open "my_proc_name 1,2,3 " , CurrentProject.Connection, adOpenKeyset, adLockOptimistic
примечание: ключевое слово Exec в конкретном случае указывать необязательно
создать команду адо и добавить к ней перед запуском параметр
данный способ позволяет не только передавать параметры, но и получать их обратно
Dim cmd As New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "sp_daystatus" 'Имя хранимой процедуры
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("@Paramdata", adInteger, adParamInputOutput)
cmd.Parameters(0) = clng(Mydata)-2
cmd.Execute 'Запускаем
MyReturnParam = cmd.Parameters(0) ' Присваиваем возвращаемый параметр переменной
Set cmd = Nothing
Прим. : Если в хранимой процедуре в конце стоит Return то возвратить она сможет только числовой параметр. Чтобы она возвращала строку - уберите из нее Return
Ссылки по теме