学习使用存储过程(stored procedure),是asp程序员的必须课之一。所有的大型数据库都支持存储过程,比如oracle、ms sql等,(但ms access不支持,不过,在access里可以使用参数化的查询)。
使用存储过程有许多好处,它可以封装复杂的数据逻辑,充分发挥大型数据库本身的优势。我们知道,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)
%>
你可能觉得在asp中使用存储过程原来是这样的简单。对!就是这么简单。
转自: http://goaler.xicp.net/showlog.asp?id=503
