ASP调用mssql存储过程实例详解 - TOMMYHU - 专注互联网开发及运营技术,提供相关资料及软件下载,奇趣网络时事评论!
Apr 6

ASP调用mssql存储过程实例详解 不指定

tommyhu , 22:56 , ASP , Comments(0) , Trackbacks(0) , Reads(4778) , Via Original Large | Medium | Small
ASP调用mssql存储过程实例详解

ado文档对使用指定属性创建新的 Parameter 对象。
语法

Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)

返回值

返回 Parameter 对象。

参数

Name   可选,字符串,代表 Parameter 对象名称。

Type   可选,长整型值,指定 Parameter 对象数据类型。关于有效设置请参见 Type 属性。

Direction   可选,长整型值,指定 Parameter 对象类型。关于有效设置请参见 Direction 属性。

Size   可选,长整型值,指定参数值最大长度(以字符或字节数为单位)。

Value   可选,变体型,指定 Parameter 对象的值。

说明

使用 CreateParameter 方法可用指定的名称、类型、方向、大小和值创建新的 Parameter 对象。在参数中传送的所有值都将写入相应的 Parameter 属性。

该方法无法自动将 Parameter 对象追加到 Command 对象的 Parameter 集合,这样就可以设置附加属性。如果将 Parameter 对象追加到集合,则 ADO 将使该附加属性的值生效。

如果在 Type 参数中指定可变长度的数据类型,那么在将它追加到 Parameters 集合之前必须传送 Size 参数或者设置 Parameter 对象的 Size 属性环裨蚪砦蟆?br>
================================================================================
参数值的类型的意义如下:

名称值 整数值 功能

adDBTimeStamp 135 日期时间数据类型

adDecimal 14 十进制整数值

adDouble 5 双精度小数值

adError 10 系统错误信息

AdGUID 72 全域性唯一识别字(Globally unique identifier)

adDispath 9 COM/OLE自动对象(Automation Object)

adInteger 3 4字节有符号整数

adIUnknown 13 COM/OLE对象

adLongVarBinary 205 大型2字节值

adLongVarChar 201 大型字符串值

adLongVarWChar 203 大型未编码字符串

adNumeric 131 十进制整数值

adSingle 4 单精度浮点小数

adSmallInt 2 2字节有符号整数

adTinyInt 16 1字节有符号整数

adUnsignedBigInt 21 8字节无符号整数

adUnsignedInt 19 4字节无符号整数

adUnsignedSmallInt 18 2字节无符号整数

adUnsignedTinyInt 17 1字节无符号整数

adUserDefined 132 用户自定义数据类型

adVariant 12 OLE对象

adVarBinary 204 双字节字符变量值

adVarChar 200 字符变量值

advarchar 202 未编码字符串变量值

adWchar 130 未编码字符串

方向值的意义如下:

名称值 整数值 功能  
adParamInput 1 允许数据输入至该参数当中

adParamOutput 2 允许数据输出至该参数当中

adParamInputOutput 3 允许数据输入、输出至该参数当中

adparamReturnValue 4 允许从一子程序中返回数据至该参数当中

更多详细资源请参考Sql Server的文档和IIS的文档资源。
================================================================================
存储过程简介:

 为了提高Asp程序的效率,有时需要在Asp中使用使用Sql Server的存储技术,下面简单作一个介绍。

存储过程的建立

  这里只简单介绍如何在Sql Server的企业管理器中如何建立存储过程:

(1)打开企业管理器Enterprise manager

(2)选择服务器组(SQL Server Group)、服务器、数据库(Database)以及相就的数据库,鼠标右击对应数据库下的Stored Procdures项,在弹出的菜单中选择New Stored Procedure,在Stored Procedures Properties中输入建立存储过程的语句。下面是一个例子:


  CREATE PROCEDURE proctest @mycola Char(10),@mycolb Char(10),@mycolc text  AS

  Insert into chatdata (mycola,mycolb,mycolc) values(@mycola,@mycolb,@mycolc)

在Sql Server的文档中它的语法为:

  CREATE PROC[EDURE] procedure_name [;number]   [

  {@parameter data_type} [VARYING] [= default] [OUTPUT]   ]

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

  | RECOMPILE, ENCRYPTION   }  ]  [FOR REPLICATION]  AS

   sql_statement [...n]

  如果你对Sql语法不熟悉,可以使用Check Syntax来检查语法。在上例中,表示建立存储过程名为mycola,带3个参数的存储过过程,其中第一个参数mycola数据类型为char,宽度10;第2个参数数据类型为char,宽度为10,第3个参数数据类型为text,在这里使用的是Sql Server的数据类型。
  存储过程建立后,下面就是如何在Asp程序中调用该存储过程:在Asp中调用存储过程 为了提高Asp程序的效率,有时需要在Asp中使用使用Sql Server的存储技术,下面简单作一个,在上面的增加参数的语句p.Append cm.CreateParameter("@mycolc",201,1,250)中,格式为:

p.Append cm.CreateParameter("参数名称",类型,方向,大小)

================================================================================
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的函数返回值那样;
另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定。
这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?)
(见我写的实例已经调试通过)实例:

'=====================================================
'功能:调用存储过程 删除栏目
'返回:NO
'By king 2005-04-22
'=====================================================
Function Fun_delete_column(DelScope,Site_id,column_id)
     ' create proc pro_delte_column
     '@Del_scope varchar(100) ,
     '@Site_ID int ,
     '@COLUMN_ID int,
     '@back_message varchar(100) output
     '建立数据库连接
     Set Comm=Server.CreateObject("ADODB.Command")
     Comm.ActiveConnection=conn
     '以comm对象建立存储过程连接,4代表连接类型为存储过程
     Comm.CommandText="pro_delte_column"
     Comm.CommandType=4
     '以p1为名称建立comm对象的parameter方法。将第一个参数fullname追加到p1集合中  
     Set p1=Comm.CreateParameter("@Del_scope",200,1,100,DelScope)
     Comm.Parameters.Append p1  
     Set p1=Comm.CreateParameter("@Site_ID",3,1,,Site_ID)
     Comm.Parameters.Append p1  
     Set p1=Comm.CreateParameter("@COLUMN_ID",3,1,,column_id)
     Comm.Parameters.Append p1        
     '以p1为名称建立comm对象的parameter方法。将第三个参数check追加到p1集合中  
     Set p1=Comm.CreateParameter("@back_message",200,2,100)
     Comm.Parameters.Append p1  
     '运行存储过程
     Comm.Execute  
     '提出结果,进行处理
     if comm("@back_message")="Success" then
           response.write "欢迎进入系统!"
     else  
           '输出值:
           Response.Write "
@back_message = " & comm.Parameters("@back_message").Value & "
"
     end if  
     '释放连接
     Set Comm=nothing  

▲返回顶部

Add a comment

Nickname

emotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemot