asp存储过程使用大全

来源:互联网 发布:古建筑预算软件 编辑:程序博客网 时间:2024/06/07 01:09
1,调用没有参数的存储过程
<
setconn=server.CreateObject("adodb.connection")
setcmd=server.CreateObject("adodb.command")
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存储过程
www.lucky365.net2002-2-7吉祥365


<setconnection1=Server.CreateObject("ADODB.Connection")
connection1.open...'联接
setcommand1=Server.CreateObject("ADODB.command")
setcommand1.activeconnection=connection1
command1.commandtype=4
command1.commandtext="sp_1"'SP名
command1.parameters(1)=...'参数值
command1.parameters(2)=...
setrecordset1=command1.execute()
>



ASP调用存储过程的技巧


1、最简单的如下
DimobjConn
SetobjConn=Server.CreateObject("ADOBD.Connection")
objConn.OpenApplication("Connection_String")
'Callthestoredproceduretoincrementacounteronthepage
objConn.Execute"execsp_AddHit"
没有参数,没有返回,没有错误处理,就是这个了

2、带参数的一种调用
objConn.Execute"execsp_AddHit'http://www.aspalliance.com',1"
请注意分割参数,该方法也不返回记录

3、返回记录的
DimobjConn
DimobjRs
SetobjConn=Server.CreateObject("ADOBD.Connection")
SetobjRs=Server.CreateObject("ADOBD.Recordset")
objConn.OpenApplication("Connection_String")
'Callthestoredproceduretoincrementacounteronthepage
objRs.OpenobjConn,"execsp_ListArticles'1/15/2001'"
'Loopthroughrecordsetanddisplayeacharticle
4、……
DimobjConn
DimobjCmd

'Instantiateobjects
SetobjConn=Server.CreateObject("ADODB.Connection")
setobjCmd=Server.CreateObject("ADODB.Command")
conn.OpenApplication("ConnectionString")

WithobjCmd
.ActiveConnection=conn'Youcanalsojustspecifyaconnectionstringhere
.CommandText="sp_InsertArticle"
.CommandType=adCmdStoredProc'Requirestheadovbs.incfileortypelibmetatag

'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调用带参数存储过程的几种方式


作者:中国论坛网收集来源:http://www.51one.net加入时间:2004-8-25 

作者:讨饭猫

ASP调用带参数存储过程的几种方式

最近有很多的朋友问到调用存储过程的问题,这里简单介绍几种ASP调用带参数存储过程的方法。

1这也是最简单的方法,两个输入参数,无返回值:
setconnection=server.createobject("adodb.connection")
connection.opensomeDSN
Connection.Execute"procnamevarvalue1,varvalue2"

''将所有对象清为nothing,释放资源
connection.close
setconnection=nothing


2如果要返回Recordset集:
setconnection=server.createobject("adodb.connection")
connection.opensomeDSN
setrs=server.createobject("adodb.recordset")
rs.Open"Execprocnamevarvalue1,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
Response.WriteadoField.Name&"="&adoField.Value&"<br>"&vbCRLF
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),@mycolctext  AS

  Insertintochatdata(mycola,mycolb,mycolc)values(@mycola,@mycolb,@mycolc)

在SqlServer的文档中它的语法为:

  CreatePROC[EDURE]procedure_name[;number]  [

  {@parameterdata_type}[VARYING][=default][OUTPUT]  ]

  [,...n]  [WITH  {  RECOMPILE  |ENCRYPTION

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