asp存储过程使用大全
2018-09-06 10:54
1,调用没有参数的存储过程
<%
strconn=dsn=pubs;uid=sa;pwd
conn.Openstrconn
setcmd.ActiveConnection=conn
cmd.CommandText={callnono}
setrs=cmc.exe或者cmd.execute
setrs=cmd.Execute()
%>
2,一个输入的参数的存储过程
<%
setconn=server.CreateObject(adodb.connection)
setcmd=server.CreateObject(adodb.command)
strconn=dsn=pubs;uid=sa;pwd
conn.Openstrconn
setcmd.ActiveConnection=conn
cmd.CommandText={calloneinput(?)}
cmd.Parameters.Appendcmd.CreateParameter(@aaa,adInteger,adParamInput)
cmd(@aaa)=100
cmd.Execute()
%>
3,一个输入参数和一个输出的参数
<%
setconn=server.CreateObject(adodb.connection)
setcmd=server.CreateObject(adodb.command)
strconn=dsn=pubs;uid=sa;pwd
conn.Openstrconn
setcmd.ActiveConnection=conn
cmd.CommandText={calloneinout(?,?)}
cmd.Parameters.Appendcmd.CreateParameter(@aaa,adInteger,adParamInput)
cmd(@aaa)=10
cmd.Parameters.Appendcmd.CreateParameter(@bbb,adInteger,adParamOutput)
cmd.Execute()
bbb=cmd(@bbb)
%>
4,一个输入参数,一个输出参数,和一个返回值
<%
setconn=server.CreateObject(adodb.connection)
setcmd=server.CreateObject(adodb.command)
strconn=dsn=pubs;uid=sa;pwd
conn.Openstrconn
setcmd.ActiveConnection=conn
cmd.CommandText={?=callonereturn(?,?)}
cmd.Parameters.Appendcmd.CreateParameter(@return_value,adInteger,adParamReturnValue)
cmd.Parameters.Appendcmd.CreateParameter(@aaa,adInteger,adParamInput)
cmd(@aaa)=10
cmd.Parameters.Appendcmd.CreateParameter(@bbb,adInteger,adParamOutput)
cmd.Execute()
bbb=cmd(@bbb)
rrr=cmd(@return_value)
%>
如何在ASP中调用SQL存储过程
吉祥365
<%setconnection1=Server.CreateObject(ADODB.Connection)
connection1.open...联接
setcommand1=Server.CreateObject(ADODB.command)
setcommand1.activeconnection=connection1
command1.commandtype=4
command1.commandtext=sp_1SP名
command1.parameters(1)=...参数值
command1.parameters(2)=...
setrecordset1=command1.execute()
%>
ASP调用存储过程的技巧
1、最简单的如下
DimobjConn
SetobjConn=Server.CreateObject(ADOBD.Connection)
objConn.OpenApplication(Connection_String)
Callthestoredproceduretoincrementacounteronthepage
objConn.Executeexecsp_AddHit
没有参数,没有返回,没有错误处理,就是这个了
2、带参数的一种调用
objConn.Executeexecsp_AddHit
请注意分割参数,该方法也不返回记录
3、返回记录的
DimobjConn
DimobjRs
SetobjConn=Server.CreateObject(ADOBD.Connection)
SetobjRs=Server.CreateObject(ADOBD.Recordset)
objConn.OpenApplication(Connection_String)
Callthestoredproceduretoincrementacounteronthepage
objRs.OpenobjConn,execsp_ListArticles1/15/2001
Loopthroughrecordsetanddisplayeacharticle
4、……
DimobjConn
DimobjCmd
Instantiateobjects
SetobjConn=Server.CreateObject(ADODB.Connection)
setobjCmd=Server.CreateObject(ADODB.Command)
conn.OpenApplication(ConnectionString)
WithobjCmd
.ActiveConnection=connYoucanalsojustspecifyaconnectionstringhere
.CommandText=sp_InsertArticle
AddInputParameters
.Parameters.Append.CreateParameter(@columnist_id,adDouble,adParamInput,,columnist_id)
.Parameters.Append.CreateParameter(@url,adVarChar,adParamInput,255,url)
.Parameters.Append.CreateParameter(@title,adVarChar,adParamInput,99,url)
.Parameters.Append.CreateParameter(@description,adLongVarChar,_
adParamInput,2147483647,description)
AddOutputParameters
.Parameters.Append.CreateParameter(@link_id,adInteger,adParamOutput,,0)
Executethefunction
Ifnotreturningarecordset,usetheadExecuteNoRecordsparameteroption
.Execute,,adExecuteNoRecords
link_id=.Parameters(@link_id)
EndWith
5、存储过程的代码
CreatePROCEDUREdbo.sp_InsertArticle
(
@columnist_idint,
@urlvarchar(255),
@titlevarchar(99),
@descriptiontext
@link_idintOUTPUT
)
AS
BEGIN
INSERTINTOdbo.t_link(columnist_id,url,title,description)
VALUES(@columnist_id,@url,@title,@description)
SELECT@link_id=@@IDENTITY
END
ASP调用带参数存储过程的几种方式
作者:中国论坛网收集来源:加入时间:2004-8-25
作者:讨饭猫
ASP调用带参数存储过程的几种方式
最近有很多的朋友问到调用存储过程的问题,这里简单介绍几种ASP调用带参数存储过程的方法。
1这也是最简单的方法,两个输入参数,无返回值:
setconnection=server.createobject(adodb.connection)
connection.opensomeDSN
Connection.Executeprocnamevarvalue1,varvalue2
将所有对象清为nothing,释放资源
connection.close
setconnection=nothing
2如果要返回Recordset集:
setconnection=server.createobject(adodb.connection)
connection.opensomeDSN
setrs=server.createobject(adodb.recordset)
rs.OpenExecprocnamevarvalue1,varvalue2,connection
将所有对象清为nothing,释放资源
rs.close
connection.close
setrs=nothing
setconnection=nothing
3以上两种方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。
首先说明,返回值有两种。一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样;另一种是可以返回多个值,存
储这些值的变量名称需要在调用参数中先行指定。
这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?)
存储过程如下:
usepubs
GO
--建立存储过程
createproceduresp_PubsTest
--定义三个参数变量,注意第三个,特别标记是用于输出
@au_lnamevarchar(20),
@intIDint,
@intIDOutintOUTPUT
AS
SELECT@intIDOut=@intID+1
SELECT*
FROMauthors
WHEREau_lnameLIKE@au_lname+%
--直接返回一个值
RETURN@intID+2
调用该存储过程的asp程序如下:
<%@Language=VBScript%>
<%
DimCmdSP
DimadoRS
DimadCmdSPStoredProc
DimadParamReturnValue
DimadParaminput
DimadParamOutput
DimadInteger
DimiVal
DimoVal
DimadoField
DimadVarChar
‘这些值在VB中是预定义常量,可以直接调用,但在VBScript中没有预定义
adCmdSPStoredProc=4
adParamReturnValue=4
adParaminput=1
adParamOutput=2
adInteger=3
adVarChar=200
iVal=5
oVal=3
建一个command对象
setCmdSP=Server.CreateObject(ADODB.Command)
建立连结
CmdSP.ActiveConnection=Driver={SQLServer};server=(local);Uid=sa;Pwd=;Database=Pubs
定义command对象调用名称
CmdSP.CommandText=sp_PubsTest
设置command调用类型是存储过程(adCmdSPStoredProc=4)
CmdSP.CommandType=adCmdSPStoredProc
往command对象中加参数
定义存储过程有直接返回值,并且是个整数,省缺值是4
CmdSP.Parameters.AppendCmdSP.CreateParameter(RETURN_VALUE,adInteger,adParamReturnValue,4)
定义一个字符型输入参数
CmdSP.Parameters.AppendCmdSP.CreateParameter(@au_lname,adVarChar,adParaminput,20,M)
定义一个整型输入参数
CmdSP.Parameters.AppendCmdSP.CreateParameter(@intID,adInteger,adParamInput,,iVal)
定义一个整型输出参数
CmdSP.Parameters.AppendCmdSP.CreateParameter(@intIDOut,adInteger,adParamOutput,oVal)
运行存储过程,并得到返回记录集
SetadoRS=CmdSP.Execute
把每个记录打印出来,其中的字段是虚拟的,可以不用管
WhileNotadoRS.EOF
foreachadoFieldinadoRS.Fields
Next
Response.Write<br>
adoRS.MoveNext
Wend
打印两个输出值:
Response.Write<p>@intIDOut=“&CmdSP.Parameters(@intIDOut).Value&</p>
Response.Write<p>Returnvalue=&CmdSP.Parameters(RETURN_VALUE).Value&</p>
大扫除
SetadoRS=nothing
SetCmdSP.ActiveConnection=nothing
SetCmdSP=nothing
%>
此外还有其他方式,稍微偏门一些,以后慢慢再说
本文参考了多篇文章,这里不一一列出。
在Asp中使用存储过程
为了提高Asp程序的效率,有时需要在Asp中使用使用SqlServer的存储技术,下面简单作一个介绍。
存储过程的建立
这里只简单介绍如何在SqlServer的企业管理器中如何建立存储过程:
(1)打开企业管理器Enterprisemanager
(2)选择服务器组(SQLServerGroup)、服务器、数据库(Database)以及相就的数据库,鼠标右击对应数据库下的StoredProcdures项,在弹出的菜单中选择NewStoredProcedure,在StoredProceduresProperties中输入建立存储过程的语句。下面是一个例子:
CREATEPROCEDUREproctest@mycolaChar(10),@mycolbChar(10),@mycolctextAS
Insertintochatdata(mycola,mycolb,mycolc)values(@mycola,@mycolb,@mycolc)
在SqlServer的文档中它的语法为:
CREATEPROC[EDURE]procedure_name[;number][
{@parameterdata_type}[VARYING][=default][OUTPUT]]
[,...n][WITH{RECOMPILEENCRYPTION
RECOMPILE,ENCRYPTION}][FORREPLICATION]AS
sql_statement[...n]
如果你对Sql语法不熟悉,可以使用CheckSyntax来检查语法。在上例中,表示建立存储过程名为mycola,带3个参数的存储过过程,其中第一个参数mycola数据类型为char,宽度10;第2个参数数据类型为char,宽度为10,第3个参数数据类型为text,在这里使用的是SqlServer的数据类型。
存储过程建立后,下面就是如何在Asp程序中调用该存储过程:在Asp中调用存储过程为了提高Asp程序的效率,有时需要在Asp中使用使用SqlServer的存储技术,下面简单作一个,在上面的增加参数的语句p.Appendcm.CreateParameter(@mycolc,201,1,250)中,格式为:
p.Appendcm.CreateParameter(参数名称,类型,方向,大小)
参许参数值的类型的意义如下:
名称值整数值功能
adDBTimeStamp135日期时间数据类型
adDecimal14十进制整数值
adDouble5双精度小数值
adError10系统错误信息
AdGUID72全域性唯一识别字(Globallyuniqueidentifier)
adDispath9COM/OLE自动对象(AutomationObject)
adInteger34字节有符号整数
adIUnknown13COM/OLE对象
adLongVarBinary205大型2字节值
adLongVarChar201大型字符串值
adLongVarWChar203大型未编码字符串
adNumeric131十进制整数值
adSingle4单精度浮点小数
adSmallInt22字节有符号整数
adTinyInt161字节有符号整数
adUnsignedBigInt218字节无符号整数
adUnsignedInt194字节无符号整数
adUnsignedSmallInt182字节无符号整数
adUnsignedTinyInt171字节无符号整数
adUserDefined132用户自定义数据类型
adVariant12OLE对象
adVarBinary204双字节字符变量值
adVarChar200字符变量值
advarchar202未编码字符串变量值
adWchar130未编码字符串
方向值的意义如下:
名称值整数值功能
adParamInput1允许数据输入至该参数当中
adParamOutput2允许数据输出至该参数当中
adParamInputOutput3允许数据输入、输出至该参数当中
adparamReturnValue4允许从一子程序中返回数据至该参数当中
更多详细资源请参考SqlServer的文档和IIS的文档资源。