1 Это также самый простой метод с двумя входными параметрами и без возвращаемого значения:
установить соединение = server.createobject(adodb.connection)
Connection.open someDSN
Connection.Execute имя процедуры varvalue1, varvalue2
'Очистить все объекты и освободить ресурсы
соединение.закрыть
установить соединение = ничего
2 Если вы хотите вернуть набор записей:
установить соединение = server.createobject(adodb.connection)
Connection.open someDSN
установите rs = server.createobject(adodb.recordset)
rs.Open Exec имя_программы varvalue1, varvalue2,connection
'Очистить все объекты и освободить ресурсы
RS.закрыть
соединение.закрыть
setrs=ничего
установить соединение = ничего
3 Ни один из двух вышеуказанных методов не может иметь возвращаемое значение (кроме набора записей). Если вы хотите получить возвращаемое значение, вам необходимо использовать метод Command.
Прежде всего, существует два типа возвращаемых значений. Один из них — напрямую возвращать значение в хранимой процедуре, точно так же, как возвращаемое значение функции C и VB; другой — возвращать несколько значений, причем имена переменных для хранения этих значений необходимо сначала указать в вызывающих параметрах; .
В этом примере необходимо обрабатывать несколько параметров, входные параметры, выходные параметры, возвращаемые наборы записей и прямое возвращаемое значение (достаточно ли он завершен?)
Хранимая процедура выглядит следующим образом:
использовать пабы
ИДТИ
-- Создаем хранимую процедуру
создать процедуру sp_PubsTest
--Определите три переменных параметра. Обратите внимание, что третья специально помечена для вывода.
@au_lname varchar (20),
@intID целое число,
@intIDOut int ВЫХОД
КАК
ВЫБЕРИТЕ @intIDOut = @intID + 1
ВЫБИРАТЬ *
ОТ авторов
ГДЕ au_lname НРАВИТСЯ @au_lname + '%'
--Возвращаем значение напрямую
ВОЗВРАТ @intID + 2
Программа asp, вызывающая эту хранимую процедуру, выглядит следующим образом:
<%@ Language=VBScript %>
<%
Тусклый CmdSP
ДимадоРС
Тусклый адкмдСПсторедпрок
Тусклый рекламный параметрReturnValue
Тусклый рекламный параметр
Dim adParamOutput
Тусклое объявлениеЦелое число
Дим иВал
Тусклый овал
Тусклое поле шума
Тусклый адВарЧар
'Эти значения являются предопределенными константами в VB и могут вызываться напрямую, но они не определены заранее в VBScript.
адкмдСПсторедпрок = 4
адПарамReturnValue = 4
адПараминпут = 1
адПарамВыход = 2
адЦелое = 3
адварчар = 200
iВал = 5
оВал = 3
'Создаем объект команды
установите CmdSP = Server.CreateObject(ADODB.Command)
'Создать ссылку
CmdSP.ActiveConnection = Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs
'Определяем имя вызова объекта команды
CmdSP.CommandText = sp_PubsTest
'Установить тип вызова команды как хранимую процедуру (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc
'Добавляем параметры в объект команды
'Определите хранимую процедуру, чтобы она имела прямое возвращаемое значение, и это целое число. Значение по умолчанию - 4.
CmdSP.Parameters.Append CmdSP.CreateParameter(RETURN_VALUE, adInteger, adParamReturnValue, 4)
'Определяем параметр ввода символов
CmdSP.Parameters.Append CmdSP.CreateParameter(@au_lname, adVarChar, adParaminput, 20, M)
'Определяем целочисленный входной параметр
CmdSP.Parameters.Append CmdSP.CreateParameter(@intID, adInteger, adParamInput, , iVal)
'Определяем целочисленный выходной параметр
CmdSP.Parameters.Append CmdSP.CreateParameter(@intIDOut, adInteger, adParamOutput, oVal)
'Запускаем хранимую процедуру и получаем возвращенный набор записей
Установите adoRS = CmdSP.Execute
'Распечатайте каждую запись. Поля виртуальные и их можно игнорировать.
Пока не люблюRS.EOF
для каждого adoField в adoRS.Fields
Response.Write adoField.Name & = & adoField.Value & <br> & vbCRLF
Следующий
Ответ.Запись<br>
адоRS.MoveNext
Венд
'Распечатываем два выходных значения:
Response.Write <p>@intIDOut = & CmdSP.Parameters(@intIDOut).Value & </p>
Response.Write <p>Возвращаемое значение = & CmdSP.Parameters(RETURN_VALUE).Value & </p>
'Генеральная уборка
Установите adoRS = ничего
Установите CmdSP.ActiveConnection = ничего
Установить CmdSP = ничего
%>
Есть и другие способы, немного более предвзятые, и о них мы поговорим позже.
Эта статья относится ко многим статьям, которые здесь не перечислены.