设为首页
收藏本站
最新电影
> 子栏目 Asp | Jsp | XML | XSL | Div+Css | 自定义函数 | 数据库 | 脚本特效
您现在的位置: 首页=>后台技术=>数据库 订阅本栏目  
ASP中调用存储过程、语法、写法
时间: 2007-09-27 22:28:47 阅读次数:11690

第 1 页 ASP中调用存储过程、语法、写法[1]
第 2 页 ASP中调用存储过程、语法、写法[2]
第 3 页 ASP中调用存储过程、语法、写法[3]
第 4 页 ASP中调用存储过程、语法、写法[4]
第 5 页 ASP中调用存储过程、语法、写法[5]
第 6 页 ASP中调用存储过程、语法、写法[6]



 7. 返回多个记录集的存储过程
    本文最先介绍的是返回记录集的存储过程有时候,需要一个存储过程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在userinfo表中增加两个字段:usertel及usermail,并设定只有登录用户可以查看这两项内容

 



以下是代码片段:
/*SP7*/
    CREATE PROCEDURE dbo.getUserInfo
       @userid int,
       @checklogin bit
    as
    set nocount on
    begin
       if @userid is null or @checklogin is null return
       select username
          from dbo.[usrinfo]
          where userid=@userid
       --若为登录用户,取usertel及usermail
       if @checklogin=1
          select usertel,usermail
             from dbo.[userinfo]
             where userid=@userid
       return
    end
    go

 以下是ASP代码:





    以下是ASP代码:




   



以下是代码片段:
 '**调用返回多个记录集的存储过程**

  DIM checklg,UserID,UserName,UserTel,UserMail
    DIM MyComm,MyRst
    UserID = 1
    'checklogin()为自定义函数,判断访问者是否登录
    checklg = checklogin()
    Set MyComm = Server.CreateObject("ADODB.Command")
    with MyComm
       .ActiveConnection = MyConStr          'MyConStr是数据库连接字串
       .CommandText      = "getUserInfo"     '指定存储过程名
       .CommandType      = 4                 '表明这是一个存储过程
       .Prepared         = true              '要求将SQL命令先行编译
       .Parameters.append .CreateParameter("@userid",3,1,4,UserID)
       .Parameters.append .CreateParameter("@checklogin",11,1,1,checklg)
       Set MyRst = .Execute
    end with
    Set MyComm = Nothing 
    '从第一个记录集中取值
    UserName = MyRst(0)
    '从第二个记录集中取值
    if not MyRst is Nothing then
       Set MyRst = MyRst.NextRecordset()
       UserTel  = MyRst(0)
       UserMail = MyRst(1)
    end if
    Set MyRst = Nothing

 以上代码中,利用Recordset对象的NextRecordset方法,取得了存储过程返回的多个记录集



 



以下是代码片段:
DIM checklg,UserID,UserName,UserTel,UserMail
    DIM MyComm,MyRst
    UserID = 1
    'checklogin()为自定义函数,判断访问者是否登录
    checklg = checklogin()
    Set MyComm = Server.CreateObject("ADODB.Command")
    with MyComm
       .ActiveConnection = MyConStr          'MyConStr是数据库连接字串
       .CommandText      = "getUserInfo"     '指定存储过程名
       .CommandType      = 4                 '表明这是一个存储过程
       .Prepared         = true              '要求将SQL命令先行编译
       .Parameters.append .CreateParameter("@userid",3,1,4,UserID)
       .Parameters.append .CreateParameter("@checklogin",11,1,1,checklg)
       Set MyRst = .Execute
    end with
    Set MyComm = Nothing 
    '从第一个记录集中取值
    UserName = MyRst(0)
    '从第二个记录集中取值
    if not MyRst is Nothing then
       Set MyRst = MyRst.NextRecordset()
       UserTel  = MyRst(0)
       UserMail = MyRst(1)
    end if
    Set MyRst = Nothing

 以上代码中,利用Recordset对象的NextRecordset方法,取得了存储过程返回的多个记录集






    至此,针对ASP调用存储过程的各种情况,本文已做了较为全面的说明最后说一下在一个ASP程序中,调用多个存储过程的不同方法
    在一个ASP程序中,调用多个存储过程至少有以下三种方法是可行的:
    1. 创建多个Command对象
   
    DIM MyComm
    Set MyComm = Server.CreateObject("ADODB.Com, mand")
    '调用存储过程一
    ......
    Set MyComm = Nothing
    Set MyComm = Server.CreateObject("ADODB.Command")
    '调用存储过程二
    ......
    Set MyComm = Nothing
    ......





    2. 只创建一个Command对象,结束一次调用时,清除其参数



以下是代码片段:
DIM MyComm
    Set MyComm = Server.CreateObject("ADODB.Command")
    '调用存储过程一
    .....
    '清除参数(假设有三个参数)
    MyComm.Parameters.delete 2
    MyComm.Parameters.delete 1
    MyComm.Parameters.delete 0
    '调用存储过程二并清除参数
    ......
    Set MyComm = Nothing

此时要注意:清除参数的顺序与参数声明的顺序相反,原因嘛,我也不知道




以下是代码片段:
DIM MyComm
    Set MyComm = Server.CreateObject("ADODB.Command")
    '调用存储过程一
    .....
    '清除参数(假设有三个参数)
    MyComm.Parameters.delete 2
    MyComm.Parameters.delete 1
    MyComm.Parameters.delete 0
    '调用存储过程二并清除参数
    ......
    Set MyComm = Nothing

此时要注意:清除参数的顺序与参数声明的顺序相反,原因嘛,我也不知道飞飞Asp技术乐.园





    3. 利用Parameters数据集合的Refresh方法重置Parameter对象





    DIM MyComm
    Set MyComm = Server.CreateObject("ADODB.Command")
    '调用存储过程一
    .....
    '重置Parameters数据集合中包含的所有Parameter对象
    MyComm.Parameters.Refresh
    '调用存储过程二
    .....
    Set MyComm = Nothing
 
    一般认为,重复创建对象是效率较低的一种方法,但是经测试(测试工具为Microsoft Application Center Test),结果出人意料:
    方法2 >= 方法1 >> 方法3
    方法2的运行速度大于等于方法1(最多可高4%左右),这两种方法的运行速度远大于方法3(最多竟高达130%),所以建议在参数多时,采用方法1,在参数较少时,采用方法2





    花了一天的时间,终于把我对于在ASP中调用存储过程的一些粗浅的经验形成了文字这其中,有些是我只知其果而不明其因的,有些可能是错误的,但是,这些都是经过我亲身实践的各位看官批判地接受吧飞飞Asp技术乐@园有不同意见,希望一定向我指明,先谢了

, mand")
    '调用存储过程一
    ......
    Set MyComm = Nothing
    Set MyComm = Server.CreateObject("ADODB.Command")
    '调用存储过程二
    ......
    Set MyComm = Nothing
    ......





    2. 只创建一个Command对象,结束一次调用时,清除其参数



以下是代码片段:
DIM MyComm
    Set MyComm = Server.CreateObject("ADODB.Command")
    '调用存储过程一
    .....
    '清除参数(假设有三个参数)
    MyComm.Parameters.delete 2
    MyComm.Parameters.delete 1
    MyComm.Parameters.delete 0
    '调用存储过程二并清除参数
    ......
    Set MyComm = Nothing

此时要注意:清除参数的顺序与参数声明的顺序相反,原因嘛,我也不知道




以下是代码片段:
DIM MyComm
    Set MyComm = Server.CreateObject("ADODB.Command")
    '调用存储过程一
    .....
    '清除参数(假设有三个参数)
    MyComm.Parameters.delete 2
    MyComm.Parameters.delete 1
    MyComm.Parameters.delete 0
    '调用存储过程二并清除参数
    ......
    Set MyComm = Nothing

此时要注意:清除参数的顺序与参数声明的顺序相反,原因嘛,我也不知道





    3. 利用Parameters数据集合的Refresh方法重置Parameter对象





    DIM MyComm
    Set MyComm = Server.CreateObject("ADODB.Command")
    '调用存储过程一
    .....
    '重置Parameters数据集合中包含的所有Parameter对象
    MyComm.Parameters.Refresh
    '调用存储过程二
    .....
    Set MyComm = Nothing
 
    一般认为,重复创建对象是效率较低的一种方法,但是经测试(测试工具为Microsoft Application Center Test),结果出人意料:
    方法2 >= 方法1 >> 方法3
    方法2的运行速度大于等于方法1(最多可高4%左右),这两种方法的运行速度远大于方法3(最多竟高达130%),所以建议在参数多时,采用方法1,在参数较少时,采用方法2





    花了一天的时间,终于把我对于在ASP中调用存储过程的一些粗浅的经验形成了文字飞飞Asp技术,乐园这其中,有些是我只知其果而不明其因的,有些可能是错误的,但是,这些都是经过我亲身实践的各位看官批判地接受吧有不同意见,希望一定向我指明,先谢了




[上一页] [下一页]
站内搜索    

下一篇T-SQL 中 SET NOCOUNT ON 的含义

上一篇数据类型详解 MSSQL

本栏目最新 栏目最新列表
access由于您和其他用户试图同时改变同一数
Microsoft SQL Server 2005 Service Pack 3
MySQL时间戳转换的方法
清除,删除表中数据的方法
mysql常用时间函数用法解释
网站优化策划 栏目最新列表
增加网站外链的快速方法
网站上线前必做的30个检查
新的友情链接参考标准(没有google的PR情况
优化Google的AdSense广告的五个工具
王通讲SEO八大基础
站点最新 站点最新列表
微博推广的一些技巧
xhEditor v1.1.7 发布,
收集的一些轻量级非常实
50个新鲜兼容最新版本的
javascript中cookie的设
Excel中出现#VALUE!、#D
jquery插件:飞飞表情插件
十个使用HTML5开发的精彩
支持HTML5的浏览器有哪些
飞妮莫属:漫画:如何写出
历史最热10条信息  
MIME介绍 及 [1] [2] [3]
巧用Google和迅雷来下载
Transact SQL 常 [1] [2]
VIA Rhine II Fast Ethe
电脑常用端 [1] [2] [3]
Do you get a kick out
十道羊皮卷 欣赏+mp3版+
每日一句:A friend and
每日一句:Theres no tu
经典__悟透JavaScript
相关文章
ASP中调用存储过程、
ASP中调用存储过程、
使用存储过程的优势
sql的存储过程接受表
在存储过程中对符号
无限级分类Sql存储过
飞飞Asp无限级分类v
飞飞Asp无限级分类v
使用存储过程的优点
SQL存储过程的编写经
 
 width= 
伟哥博客 西安房产 123最新电影 三四六四