LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

ASP存储过程使用大全

admin
2010年7月3日 14:25 本文热度 5314
1,调用没有参数的存储过程[br]<%[br]set conn=server.createobject("adodb.connection")[br]set cmd=server.createobject("adodb.command")[br]strconn="dsn=pubs;uid=sa;pwd" [p]conn.open strconn[br]set cmd.activeconnection=conn[/p] [p]cmd.commandtext="{call nono}"[/p] [p]'set rs=cmc.exe 或者cmd.execute[/p] [p]set rs=cmd.execute()[/p] [p]%>[br]2,一个输入的参数的存储过程[br]<%[br]set conn=server.createobject("adodb.connection")[br]set cmd=server.createobject("adodb.command")[br]strconn="dsn=pubs;uid=sa;pwd"[/p] [p]conn.open strconn[br]set cmd.activeconnection=conn[/p] [p]cmd.commandtext="{call oneinput(?)}"[br]cmd.parameters.append cmd.createparameter("@aaa",adinteger ,adparaminput )[br]cmd("@aaa")=100[/p] [p]cmd.execute()[/p] [p]%>[br]3,一个输入参数和一个输出的参数[br]<%[br]set conn=server.createobject("adodb.connection")[br]set cmd=server.createobject("adodb.command")[br]strconn="dsn=pubs;uid=sa;pwd"[/p] [p]conn.open strconn[br]set cmd.activeconnection=conn[/p] [p]cmd.commandtext = "{call oneinout(?,?)}"[br]cmd.parameters.append cmd.createparameter("@aaa",adinteger,adparaminput)[br]cmd("@aaa")=10[br]cmd.parameters.append cmd.createparameter("@bbb",adinteger,adparamoutput)[/p] [p]cmd.execute()[/p] [p]bbb=cmd("@bbb")[br]%>[br]4,一个输入参数,一个输出参数,和一个返回值[br]<%[br]set conn=server.createobject("adodb.connection")[br]set cmd=server.createobject("adodb.command")[br]strconn="dsn=pubs;uid=sa;pwd"[/p] [p]conn.open strconn[br]set cmd.activeconnection=conn[/p] [p]cmd.commandtext="{?=call onereturn(?,?)}"[/p] [p]cmd.parameters.append cmd.createparameter("@return_value",adinteger,adparamreturnvalue )[br]cmd.parameters.append cmd.createparameter("@aaa",adinteger,adparaminput )[br]cmd("@aaa")=10[br]cmd.parameters.append cmd.createparameter("@bbb",adinteger,adparamoutput)[/p] [p]cmd.execute()[/p] [p]bbb=cmd("@bbb")[br]rrr=cmd("@return_value")[br]%>[/p] [p][/p] [p][/p] [p][/p] [p][br][b]如何在asp中调用sql存储过程[/b][/p] [p]<%set connection1 = server.createobject("adodb.connection")[br]connection1.open ... '联接[br]set command1=server.createobject("adodb.command") [br]set command1.activeconnection=connection1[br]command1.commandtype=4 [br]command1.commandtext="sp_1" 'sp 名[br]command1.parameters(1)=... '参数值[br]command1.parameters(2)=...[br]set recordset1=command1.execute()[br]%>[/p] [p][/p] [p][/p] [p][b]asp调用存储过程的技巧[/b][/p] [p][br]1、最简单的如下[br] dim objconn[br] set objconn = server.createobject("adobd.connection")[br] objconn.open application("connection_string")[br] 'call the stored procedure to increment a counter on the page[br] objconn.execute "exec sp_addhit"[br] 没有参数,没有返回,没有错误处理,就是这个了[br] [br] 2、带参数的一种调用[br] objconn.execute "exec sp_addhit 'http://aspalliance.com', 1"[br] 请注意分割参数,该方法也不返回记录[br] [br] 3、返回记录的[br] dim objconn[br] dim objrs[br] set objconn = server.createobject("adobd.connection")[br] set objrs = server.createobject("adobd.recordset")[br] objconn.open application("connection_string")[br] 'call the stored procedure to increment a counter on the page[br] objrs.open objconn, "exec sp_listarticles '1/15/2001'"[br] 'loop through recordset and display each article[br] 4、……[br] dim objconn[br] dim objcmd[br] [br] 'instantiate objects[br] set objconn = server.createobject("adodb.connection")[br] set objcmd = server.createobject("adodb.command")[br] conn.open application("connectionstring")[br] [br] with objcmd[br] .activeconnection = conn 'you can also just specify a connection string here[br] .commandtext = "sp_insertarticle" [br] .commandtype = adcmdstoredproc 'requires the adovbs.inc file or typelib meta tag[br] [br] 'add input parameters[br] .parameters.append .createparameter("@columnist_id", addouble, adparaminput, , columnist_id)[br] .parameters.append .createparameter("@url", advarchar, adparaminput, 255, url)[br] .parameters.append .createparameter("@title", advarchar, adparaminput, 99, url)[br] .parameters.append .createparameter("@description", adlongvarchar, _[br] adparaminput, 2147483647, description)[br] [br] 'add output parameters[br] .parameters.append .createparameter("@link_id", adinteger, adparamoutput, , 0)[br] [br] 'execute the function[br] 'if not returning a recordset, use the adexecutenorecords parameter option[br] .execute, , adexecutenorecords[br] link_id = .parameters("@link_id")[br] end with[br] [br] 5、存储过程的代码[br] create procedure dbo.sp_insertarticle[br] ([br] @columnist_id int,[br] @url varchar(255),[br] @title varchar(99),[br] @description text[br] @link_id int output[br] )[br] as[br] begin[br] insert into dbo.t_link (columnist_id,url,title,description)[br] values (@columnist_id,@url,@title,@description)[br] [br] select @link_id = @@identity[br] end[/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][b]asp调用带参数存储过程的几种方式[/b] [br][br][br]最近有很多的朋友问到调用存储过程的问题,这里简单介绍几种asp调用带参数存储过程的方法。[/p] [p]1 这也是最简单的方法,两个输入参数,无返回值:[br]set connection = server.createobject("adodb.connection")[br]connection.open somedsn [br]connection.execute "procname varvalue1, varvalue2"[/p] [p]''将所有对象清为nothing,释放资源[br]connection.close[br]set connection = nothing[/p] [p][br]2 如果要返回 recordset 集:[br]set connection = server.createobject("adodb.connection")[br]connection.open somedsn [br]set rs = server.createobject("adodb.recordset")[br]rs.open "exec procname varvalue1, varvalue2",connection[/p] [p]''将所有对象清为nothing,释放资源[br]rs.close[br]connection.close[br]set rs = nothing[br]set connection = nothing[/p] [p][br]3 以上两种方法都不能有返回值,(recordset除外),如果要得到返回值,需要用command的方法。[br]首先说明,返回值有两种。一种是在存储过程中直接return一个值,就象c和vb的函数返回值那样;另一种是可以返回多个值,存[br]储这些值的变量名称需要在调用参数中先行指定。[br]这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?)[br]存储过程如下:[/p] [p]use pubs[br]go[/p] [p]-- 建立存储过程[br]create procedure sp_pubstest[/p] [p]-- 定义三个参数变量,注意第三个,特别标记是用于输出[br]@au_lname varchar (20), [br]@intid int,[br]@intidout int output[/p] [p]as[/p] [p]select @intidout = @intid + 1[/p] [p]select * [br]from authors [br]where au_lname like @au_lname + ''%''[/p] [p]--直接返回一个值[br]return @intid + 2[/p] [p][br]调用该存储过程的asp程序如下:[/p] [p]<%@ language=vbscript %>[br]<%[br]dim cmdsp[br]dim adors[br]dim adcmdspstoredproc[br]dim adparamreturnvalue[br]dim adparaminput[br]dim adparamoutput[br]dim adinteger[br]dim ival[br]dim oval[br]dim adofield[br]dim advarchar[/p] [p]‘这些值在 vb 中是预定义常量,可以直接调用,但在 vbscript 中没有预定义[br]adcmdspstoredproc = 4[br]adparamreturnvalue = 4[br]adparaminput = 1[br]adparamoutput = 2[br]adinteger = 3[br]advarchar = 200[/p] [p]ival = 5[br]oval = 3[/p] [p]''建一个command对象[br]set cmdsp = server.createobject("adodb.command")[/p] [p]''建立连结[br]cmdsp.activeconnection = "driver={sql server};server=(local);uid=sa;pwd=;database=pubs"[/p] [p]''定义command 对象调用名称 [br]cmdsp.commandtext = "sp_pubstest"[/p] [p]''设置command调用类型是存储过程 (adcmdspstoredproc = 4)[br]cmdsp.commandtype = adcmdspstoredproc[/p] [p]''往command 对象中加参数[br]''定义存储过程有直接返回值,并且是个整数,省缺值是4[br]cmdsp.parameters.append cmdsp.createparameter("return_value", adinteger, adparamreturnvalue, 4)[br]''定义一个字符型输入参数[br]cmdsp.parameters.append cmdsp.createparameter("@au_lname", advarchar, adparaminput, 20, "m")[br]''定义一个整型输入参数[br]cmdsp.parameters.append cmdsp.createparameter("@intid", adinteger, adparaminput, , ival)[br]''定义一个整型输出参数[br]cmdsp.parameters.append cmdsp.createparameter("@intidout", adinteger, adparamoutput, oval)[/p] [p]''运行存储过程,并得到返回记录集[br]set adors = cmdsp.execute[/p] [p][br]''把每个记录打印出来,其中的字段是虚拟的,可以不用管[br]while not adors.eof[/p] [p]for each adofield in adors.fields[br]response.write adofield.name & "=" & adofield.value & "
" & vbcrlf[br]next[br]response.write "
"[br]adors.movenext[br]wend[/p] [p]''打印两个输出值:[br]response.write "

@intidout = “ & cmdsp.parameters("@intidout").value & "

"[br]response.write "

return value = " & cmdsp.parameters("return_value").value & "

"[/p] [p][br]''大扫除[br]set adors = nothing[br]set cmdsp.activeconnection = nothing[br]set cmdsp = nothing[br]%>[/p] [p]此外还有其他方式,稍微偏门一些,以后慢慢再说,本文参考了多篇文章,这里不一一列出。[/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p][/p] [p]  [b]在asp中使用存储过程[/b][/p] [p]  为了提高asp程序的效率,有时需要在asp中使用使用sql server的存储技术,下面简单作一个介绍。[/p] [p]  存储过程的建立[/p] [p]  这里只简单介绍如何在sql server的企业管理器中如何建立存储过程:[/p] [p](1)打开企业管理器enterprise manager[/p] [p](2)选择服务器组(sql server group)、服务器、[url=http://ninedns.com/webhosting/mssql.asp]数据库[/url](database)以及相就的[url=http://ninedns.com/webhosting/mssql.asp]数据库[/url],鼠标右击对应[url=http://ninedns.com/webhosting/mssql.asp]数据库[/url]下的stored procdures项,在弹出的菜单中选择new stored procedure,在stored procedures properties中输入建立存储过程的语句。下面是一个例子:[/p] [p][br]  create procedure proctest @mycola char(10),@mycolb char(10),@mycolc text  as[/p] [p]  insert into chatdata (mycola,mycolb,mycolc) values(@mycola,@mycolb,@mycolc)[/p] [p]在sql server的文档中它的语法为:[/p] [p]  create proc[edure] procedure_name [;number]   [[/p] [p]  [url=mailto:%7b@parameter][u]{@parameter[/u][/url] data_type} [varying] [= default] [output]   ][/p] [p]  [,...n]  [with    {   recompile   | encryption[/p] [p]  | recompile, encryption   }  ]  [for replication]  as[/p] [p]   sql_statement [...n][/p] [p]  如果你对sql语法不熟悉,可以使用check syntax来检查语法。在上例中,表示建立存储过程名为mycola,带3个参数的存储过过程,其中第一个参数mycola数据类型为char,宽度10;第2个参数数据类型为char,宽度为10,第3个参数数据类型为text,在这里使用的是sql server的数据类型。[/p] [p]  存储过程建立后,下面就是如何在asp程序中调用该存储过程:在asp中调用存储过程 为了提高asp程序的效率,有时需要在asp中使用使用sql server的存储技术,下面简单作一个,在上面的增加参数的语句p.append cm.createparameter("@mycolc",201,1,250)中,格式为:[/p] [p]p.append cm.createparameter("参数名称",类型,方向,大小)[/p] [p]参许参数值的类型的意义如下:[/p] [p]名称值 整数值 功能[/p] [p][br]  addbtimestamp 135 日期时间数据类型[/p] [p]  addecimal 14 十进制整数值[/p] [p]  addouble 5 双精度小数值[/p] [p]  aderror 10 系统错误信息[/p] [p]adguid 72 全域性唯一识别字(globally unique identifier)[/p] [p]addispath 9 com/ole自动对象(automation object)[/p] [p]adinteger 3 4字节有符号整数[/p] [p]adiunknown 13 com/ole对象[/p] [p]adlongvarbinary 205 大型2字节值[/p] [p]adlongvarchar 201 大型字符串值[/p] [p]adlongvarwchar 203 大型未编码字符串[/p] [p]adnumeric 131 十进制整数值[/p] [p]adsingle 4 单精度浮点小数[/p] [p]adsmallint 2 2字节有符号整数[/p] [p]adtinyint 16 1字节有符号整数[/p] [p]adunsignedbigint 21 8字节无符号整数[/p] [p]adunsignedint 19 4字节无符号整数[/p] [p]adunsignedsmallint 18 2字节无符号整数[/p] [p]adunsignedtinyint 17 1字节无符号整数[/p] [p]aduserdefined 132 用户自定义数据类型[/p] [p]advariant 12 ole对象[/p] [p]advarbinary 204 双字节字符变量值[/p] [p]advarchar 200 字符变量值[/p] [p]advarchar 202 未编码字符串变量值[/p] [p]adwchar 130 未编码字符串[/p] [p][br]方向值的意义如下:[/p] [p][br]名称值 整数值 功能[/p] [p][br]adparaminput 1 允许数据输入至该参数当中[/p] [p]adparamoutput 2 允许数据输出至该参数当中[/p] [p]adparaminputoutput 3 允许数据输入、输出至该参数当中[/p] [p]adparamreturnvalue 4 允许从一子程序中返回数据至该参数当中[/p] [p]更多详细资源请参考sql server的文档和iis的文档资源。[/p]

该文章在 2010/7/3 14:25:34 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved