ASP CALLS SQLSERVER SHORG
Источник http://www.bmj2000.com/vb/techniccolumn/subdetail.asp?mainid=2&boardId=ASP&itemid=%CA%FD%BE%DD%BF%E2%B2%D9%D7%F7&RECID=2216
Вызов базы данных хранимых процедур
<%
SetDataConn = server.createObject ("adodb.connection")
'Создать объект соединения
DataConn.open "dsn = sinotrans; server = app_server; uid = sa; pwd =; app = microsoft (r) Разработка Instrestudio; wsid = app_server; regional = yes"
SetCmdtemp = server.createObject ("adodb.command")
'Создать командный объект
Setrst = server.createObject ("adodb.recordset")
'Создать объект набора записей
cmdtemp.commandtext = "dbo.pd_test" 'Имя хранимой процедуры
cmdtemp.commandtype = 4
Категория команды 4, обозначена как хранящаяся процедура
SetCmdtemp.activeConnection = dataConn
Settmpparam = cmdtemp.createParameter («returnValue», 3,4,4)
cmdtemp.parameters.appendtmpparam
Settmpparam = cmdtemp.createParameter ("@Betindate", 135,1,16, Riqi)
'Создать объект входного параметра
cmdtemp.parameters.appendtmpparam
rst.opencmdtemp ,, 1,3
'Generate Results
%>
Хранитованная процедура, вызванная здесь, - это PD_TEST, который является стандартным методом, предоставленным в ADO. Тем не менее, существует проблема, то есть, когда в хранимой процедуре есть более двух выбранных операторов, но логически невозможно выполнить одновременно, ADO подтолкнет вас, что в хранимой процедуре слишком много выбранных операторов. Решение состоит в том, чтобы напрямую выполнить хранимую процедуру, используя метод выполнения объекта соединения ADO, следующим образом:
<%
SetDataConn = server.createObject ("adodb.connection")
'Создать объект соединения
DataConn.open "dsn = sinotrans; server = app_server; uid = sa; pwd =; app = microsoft (r) Разработка Instrestudio; wsid = app_server; regional = yes"
ss = "celfedbo.pd_test" & "'" & riqi1 & "" ""
Setrs = dataConn.execute (ss)
%>