首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 冲浪宝典-> 冲浪技巧
ASP中使用存储过程-ASP教程,ASP应用
作者:网友供稿 点击:36
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
学习使用存储过程(stored procedure),是asp程序员的必须课之一。

所有的大型数据库都支持存储过程,比如oracle、ms sql等,(但ms access不支持,不过,在access里可以使用参数化的查询)。

存储过程是利用sql server所提供的tranact-sql语言所编写的程序。tranact-sql语言是sql server提供专为设计数据库应用程序的语言,它是应用程序和sql server数据库间的主要程序式设计界面。它好比oracle数据库系统中的pro-sql和informix的数据库系统能够中的informix-4gl语言一样。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:
1)、变量说明
2)、ansi兼容的sql命令(如select,update….)
3)、一般流程控制命令(if…else…、while….)
4)、内部函数

存储过程的书写格


create procedure [拥有者.]存储过程名[;程序编号]
[(参数#1,…参数#1024)]
[with
{recompile | encryption | recompile, encryption}
]
[for replication]
as 程序行



其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数(sql server 7.0以上版本),参数的使用方法如下:


@参数名 数据类型 [varying] [=内定值] [output]



每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了image外,其他sql server所支持的数据类型都可使用。

[=内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[output]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数,同时也需要在结果中输出的,则该项必须为output,而如果只是做输出参数用,可以用cursor,同时在使用该参数时,必须指定varying和output这两个语句。


create procedure order_tot_amt @o_id int,@p_tot int output as
select @p_tot = sum(unitprice*quantity)
from orderdetails
where ordered=@o_id




该例子是建立一个简单的存储过程order_tot_amt,这个存储过程根据用户输入的定单id号码(@o_id),由定单明细表(orderdetails)中计算该定单销售总额[单价(unitprice)*数量(quantity)],这一金额通过@p_tot这一参数输出给调用这一存储过程的程序

使用存储过程有许多好处,它可以封装复杂的数据逻辑,充分发挥大型数据库本身的优势。

我们知道,asp并不适合做复杂的数据运算,而通过old db访问数据库,由于数据需要在asp和数据库之间传递,相当消耗系统资源。

事实上,如果数据库仅仅起着数据存储的作用,那么它的功能是远远没有得到利用的。

关于如何创建存储过程,请参考ms sql的相关文档。

本文介绍存储过程如何在asp中运用。

简单的一个sql语句:


select id,name,picture,time,duty from employ



我们可以创建一个存储过程:


create procedure sp_employ
as
select id,name,picture,time,duty from employ
go



而sql语句:


select id,name,picture,time,duty from employ where id=10230



对应的存储过程是:(用alter替换我们已有的存储过程)


alter procedure sp_employ
@inid int
as
select id,name,picture,time,duty from employ where id=@inid
go




下面对比一下sql和存储过程在asp中的情况。首先看看直接执行sql的情况:


<%
dim conn, strsql, rs
set conn = server.createobject("adodb.connection")
conn.open "dsn=webdata;uid=user;pwd=password"
strsql = "select id,name,picture,time,duty from employ "
set rs = conn.execute(strsql)
%>




再看看如何执行stored procedure:

<%
dim conn, strsql, rs
set conn = server.createobject("adodb.connection")
conn.open "dsn=webdata;uid=user;pwd=password" ’make connection
strsql = "sp_employ"
set rs = conn.execute(strsql)
%>

而执行带参数的stored procedure也是相当类似的:


<%
dim conn, strsql, rs, myint
myint = 1
set conn = server.createobject("adodb.connection")
conn.open "dsn=webdata;uid=user;pwd=password"
strsql = "sp_mystoredprocedure " & myint
set rs = conn.execute(strsql)
%>




在sql server中执行存储过程

在sql server的查询分析器中,输入以下代码:
declare @tot_amt int
execute order_tot_amt 1,@tot_amt output
select @tot_amt

以上代码是执行order_tot_amt这一存储过程,以计算出定单编号为1的定单销售金额,我们定义@tot_amt为输出参数,用来承接我们所要的结果


在asp中调用存储过程


<!--必须加载adovbs.inc文件,否则将出错-->
<!--#include file="adovbs.inc"-->
<%
dim objcnn
dim objcmd
dim rs
const o_id=112

-----建立connection对象----------
set objcnn=server.createobject("adodb.connection")
objcnn.open "driver={sql server};server=localhost;uid=sa;pwd=cncanet;database=check;"
-----建立command对象-----------
set objcmd=server.createobject("adodb.command")
objcmd.activeconnection=objcnn
objcmd.commandtext="order_tot_amt" 指定存储过程名称
objcmd.commandtype=adcmdstoredproc 其为stored procedure
-----准备stored procedure 的参数-------
objcmd.parameters.append _
objcmd.createparameter("o_id",adinteger,adparaminput,,o_id)
objcmd.parameters.append _
objcmd.createparameter("p_tot",adbigint,adparamoutput,,0)
-----执行存储过程----------------------
objcmd.execute

-----输出参数以及处理结果--------------
for each parm in objcmd.parameters
response.write parm.name &"="& trim(parm) &"<br>"
next
%>



文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·不用SQL语句查询DataTable中的数据-.NET教程,数据库应用
·一个asp模板类-ASP教程,ASP应用
·谈有线电视系统前端设备调试
·表单提交“GET”的用法(form所有提交的值都会在地址栏出现)-ASP教程,ASP应用
·-48v整流器配置与直流系统设置
·c#下重写BUTTON控件-.NET教程,C#语言
·catv网络常见及疑难故障的分析处理
·常用路由协议的分析及比较
·mpls的体系结构与组网技术
·初级:.net框架下的MD5-.NET教程,.NET Framework
最新文章
·在线高速免费收看英超比赛的方法_冲浪技巧
·为什么成功的论坛和博客无法双管其下_站长心得
·做好一个好的网站策划_网络编辑
·windows live folders 新鲜试用_冲浪技巧
·什么样的网站放google adsense最理想_网赚技巧
·被google adsense 除名后怎么办_网赚技巧
·刘韧:站长站在草根与神话之间_站长访谈
·张弛有度的google adsense_google推广
·浏览器内嵌流媒体播放器silverlight_冲浪技巧
·高分辨率下界面布局的解决方案4_站长心得
相关主题
  • ASP中使用组件搜索-ASP教程,组件开发
  • ASP中使用Form和QueryString集合-ASP教程,ASP技巧
  • ASP中使用ServerVariables集合详解-ASP教程,ASP技巧
  • ASP中使用SQL语句操作数据库-ASP教程,数据库相关
  • asp中使用图片验证码的方法-ASP教程,数据库相关
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭