asp存储过程使用大全

2018-09-06 10:54

阅读:538

  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的文档资源。


评论


亲,登录后才可以留言!