注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 服务器监控策略浅谈
 帮助

asp存储过程使用大全


2008-05-20 09:18:30
 标签:asp 存储 过程    [推送到技术圈]

asp存储过程使用大全
1,调用没有参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
 
conn.Open strconn
set cmd.ActiveConnection=conn
 
cmd.CommandText="{call nono}"
 
'set rs=cmc.exe 或者cmd.execute
 
set rs=cmd.Execute()
 
%>
 
2,一个输入的参数的存储过程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
 
conn.Open strconn
set cmd.ActiveConnection=conn
 
cmd.CommandText="{call oneinput(?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger ,adParamInput )
cmd("@aaa")=100
 
cmd.Execute()
%>
 
3,一个输入参数和一个输出的参数
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
 
conn.Open strconn
set cmd.ActiveConnection=conn
 
cmd.CommandText = "{call oneinout(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput)
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)
 
cmd.Execute()
 
bbb=cmd("@bbb")
%>
 
4,一个输入参数,一个输出参数,和一个返回值
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
 
conn.Open strconn
set cmd.ActiveConnection=conn
 
cmd.CommandText="{?=call onereturn(?,?)}"
 
cmd.Parameters.Append cmd.CreateParameter("@return_value",adInteger,adParamReturnValue )
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput )
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)
 
cmd.Execute()
 
bbb=cmd("@bbb")
rrr=cmd("@return_value")
%>




    文章评论
 
2008-05-20 09:19:01
如何在ASP中调用SQL存储过程

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



ASP调用存储过程的技巧

1、最简单的如下
  Dim objConn
  Set objConn = Server.CreateObject("ADOBD.Connection")
  objConn.Open Application("Connection_String")
  'Call the stored procedure to increment a counter on the page
  objConn.Execute "exec sp_AddHit"
  没有参数,没有返回,没有错误处理,就是这个了
 
  2、带参数的一种调用
  objConn.Execute "exec sp_AddHit 'http://www.aspalliance.com', 1"
  请注意分割参数,该方法也不返回记录
 
  3、返回记录的
  Dim objConn
  Dim objRs
  Set objConn = Server.CreateObject("ADOBD.Connection")
  Set objRs = Server.CreateObject("ADOBD.Recordset")
  objConn.Open Application("Connection_String")
  'Call the stored procedure to increment a counter on the page
  objRs.Open objConn, "exec sp_ListArticles '1/15/2001'"
  'Loop through recordset and display each article
 
  4、……
  Dim objConn
  Dim objCmd
 
  'Instantiate objects
  Set objConn = Server.CreateObject("ADODB.Connection")
  set objCmd = Server.CreateObject("ADODB.Command")
  conn.Open Application("ConnectionString")
 
  With objCmd
  .ActiveConnection = conn 'You can also just specify a connection string here
  .CommandText = "sp_InsertArticle"
  .CommandType = adCmdStoredProc 'Requires the adovbs.inc file or typelib meta tag
 
  'Add Input Parameters
  .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)
 
  'Add Output Parameters
  .Parameters.Append .CreateParameter("@link_id", adInteger, adParamOutput, , 0)
 
  'Execute the function
  'If not returning a recordset, use the adExecuteNoRecords parameter option
  .Execute, , adExecuteNoRecords
  link_id = .Parameters("@link_id")
  End With
 
  5、存储过程的代码
  Create PROCEDURE dbo.sp_InsertArticle
  (
  @columnist_id int,
  @url varchar(255),
  @title varchar(99),
  @description text
  @link_id int OUTPUT
  )
  AS
  BEGIN
  INSERT INTO dbo.t_link (columnist_id,url,title,description)
  VALUES (@columnist_id,@url,@title,@description)
 
  SELECT @link_id = @@IDENTITY
  END


2008-05-20 09:19:19
ASP调用带参数存储过程的几种方式

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

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

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


2 如果要返回 Recordset 集:
set connection = server.createobject("adodb.connection")
connection.open someDSN
set rs = server.createobject("adodb.recordset")
rs.Open "Exec procname varvalue1, varvalue2",connection

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


3 以上两种方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。
首先说明,返回值有两种。一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样;另一种是可以返回多个值,存
储这些值的变量名称需要在调用参数中先行指定。
这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?)
存储过程如下:
use pubs
GO
-- 建立存储过程
create procedure sp_PubsTest
-- 定义三个参数变量,注意第三个,特别标记是用于输出
@au_lname varchar (20),
@intID int,
@intIDOut int OUTPUT
AS
SELECT @intIDOut = @intID + 1
SELECT *
FROM authors
WHERE au_lname LIKE @au_lname + ''%''

--直接返回一个值
RETURN @intID + 2


调用该存储过程的asp程序如下:
<%@ Language=VBScript %>
<%
Dim CmdSP
Dim adoRS
Dim adCmdSPStoredProc
Dim adParamReturnValue
Dim adParaminput
Dim adParamOutput
Dim adInteger
Dim iVal
Dim oVal
Dim adoField
Dim adVarChar

‘这些值在 VB 中是预定义常量,可以直接调用,但在 VBScript 中没有预定义
adCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
adInteger = 3
adVarChar = 200

iVal = 5
oVal = 3

''建一个command对象
set CmdSP = Server.CreateObject("ADODB.Command")

''建立连结
CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs"

''定义command 对象调用名称
CmdSP.CommandText = "sp_PubsTest"

''设置command调用类型是存储过程 (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc

''往command 对象中加参数
''定义存储过程有直接返回值,并且是个整数,省缺值是4
CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
''定义一个字符型输入参数
CmdSP.Parameters.Append CmdSP.CreateParameter("@au_lname", adVarChar, adParaminput, 20, "M")
''定义一个整型输入参数
CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal)
''定义一个整型输出参数
CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal)

''运行存储过程,并得到返回记录集
Set adoRS = CmdSP.Execute

''把每个记录打印出来,其中的字段是虚拟的,可以不用管
While Not adoRS.EOF

for each adoField in adoRS.Fields
  Response.Write adoField.Name & "=" & adoField.Value & "<br>" & vbCRLF
Next
Response.Write "<br>"
adoRS.MoveNext
Wend

''打印两个输出值:
Response.Write "<p>@intIDOut = “ & CmdSP.Parameters("@intIDOut").Value & "</p>"
Response.Write "<p>Return value = " & CmdSP.Parameters("RETURN_VALUE").Value & "</p>"

''大扫除
Set adoRS = nothing
Set CmdSP.ActiveConnection = nothing
Set CmdSP = nothing
%>

2008-07-15 10:42:42
.net上经常用到...但是ASP上好少用...学习一下...

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: