最佳浏览:800*600像素IE6/Opera8/Firefox2及以上
banner
本站动态
本站搜索

关 键 词
搜索范围

网上调查

网站用什么布局好?
表格布局
纯CSS的div布局
div+table
根据情况而定

广告推广区
SQL SERVER存储过程入门
发布时间:2007-6-21 10:05:42



Google

   这里我们只是一些最最简单的入门级知识,下面以SQL SERVER为例来讲一下简单的存储过程语法,其中的conn.asp包含是数据库连接语句,conn_close.asp包含是清空数据库连接语句,这里不作介绍。
   一、创建存储过程,在sql server的查询分析器中创建存储过程这里将略过,方法是打开sql server查询分析器,把存储过程语句直接复制过去,点绿色小按钮运行就OK.
<例一>
1.<!--#include file="conn.asp"-->
2.<%
3.set rs=conn.execute("create proc uid as select id from user order by id desc")
4.set rs=nothing
5.%>
6.<!--#include file="conn_close.asp"-->
   现在来简单的介绍一下存储过程语法:
   建立存储过程的基本语法为:create proc [存储过程名] [参数列表(多个以","分隔)] as (begin) [SQL语句] (end)
   如果as之后超过一条语句,必须用begin   end 所包含起来,单条SQL语句的话,begin  end 可省略。
   现在我们来分析一下<例一>中的存储过程语句,首先是create proc,提示SQL server将要创建一个存储过程,uid 为存储过程名,名称区分大小写,as后面跟sql语句"select id from user order by id desc",该SQL语句为最简单的SQL语句,这里不再介绍该语句实现的功能。
  我们在这里使用execute方法来执行该存储过程语句,让其将存储过程添加到sql server中去,set rs=conn.execute(sqlstr)方法,sqlstr可以为sql语句也可为存储过程语句。
上面这个是最简单最基本的存储过程,这完全不能发挥存储过程的作用,下面我们再看一下添加了参数的存储过程,存储过程称为第五代编程语言,当然是要带上参数了。
<例二>
1.create proc u_id
2.@user varchar(20)
3.@pwd varchar(20)
4.@ck_ok int output
5.as
6.declare @strpwd varchar(20)
7.begin
8.  if user=null
9.    set @ck_ok=1
10.  else
11.     select @strpwd=pwd from user where user=@user
12.     if @strpwd=@pwd
13.         set @ck_ok=2
14.     else
15.         set @ck_ok=1
16.end
   <例二>是一个简单的用户名/密码验证存储过程,下面我们来一行一行代码来分析:
第1行:提示sql server将创建一个存储过程
第2,3行:建立参数列表,存储过程中用户创建的所有参数变量都是以@开头,该参数的赋值是应用程序传递赋值的,第二行为用户名,第三行为密码
第4行:建立一输出参数,关键词output说明该参数为输出参数
第5行:as提示下面为SQL语句
第6行:关键词declare表示建立一临时变量,用来保存从数据库内取出的密码
第7行:begin提示下面将为超过一句的语句,为一语句段
第8,9行:判断用户名是否为空,如果为空,则输出参数值为1
第10行:else表示将执行用户名不为空的情况
第11行:SQL语句,不再解释,普通的SQL查询语句
第12行:判断临时变量strpwd是否与输入变量pwd值相等,即判断输入的密码是否与数据库内密码相等
第13行:当密码相等时,输入参数值为2
第14,15行:判断密码不正确时,输入参数值为1
第16行:end与第7行的begin相对应,说明as语句块结束
  该存储过程可以在SQL SERVER的查询分析器中运行,直接添加到SQL SERVER中去,下面是在ASP中如何创建该存储过程,即把存储过程写成一行.
1.<!--#include file="conn.asp"-->
2.<%
3.set rs=conn.execute("create proc u_id  @user varchar(20) @pwd varchar(20)  @ck_ok int  output  as  declare @strpwd varchar(20)  begin   if user=null  set @ck_ok=1  else  select @strpwd=pwd from user where user=@user  if @strpwd=@pwd  set @ck_ok=2  else   set @ck_ok=1
  end")
4.set rs=nothing
5.%>
6.<!--#include file="conn_close.asp"-->
   运行该程序就可以在sql server中添加一名为u_id的存储过程.添加后可以打开sql server企业管理器,找到所属的数据库,点击存储过程,如果没看到就刷新一次.

   二、ASP中调用存储过程
<例三>
   先调用一下<例一>所创建的存储过程,并分行把用户ID值输出
1.<!--#include file="conn.asp"-->
2.<%
3.set rs=conn.execute("uid")
4.do while not rs.eof
5.   response.write"<br />"&trim(rs("id"))
6.   rs.movenext
7.loop
4.set rs=nothing
5.%>
6.<!--#include file="conn_close.asp"-->
   我们来分析一下<例三>中的代码,其它代码都不讲了,单讲一下第3行和第5行的代码,第3行就是利用execute方法调用名为uid 的存储过程,当然可以使用command和open方法,这里不再介绍,方法差不多,就是execute()跟open()方法的区别.第5行是输出返回值.

   下面再讲一下如何给存储过程传递参数值,以<例二>所创建的存储过程为例,<例二>中有两个参数,即@user和@pwd

<例四>
1.<!--#include file="conn.asp"-->
2.<%
3.user=trim(request.form("user"))  '从表单接收用户名
4.pwd=trim(request.form("pwd"))    '从表单接收密码
5.set rs=conn.execute("u_id '"&user&"','"&pwd&"'")
6.if trim(rs("ck_ok"))=1 then
7.   response.write"用户名密码不正确"
8.else
9.   response.write"登录成功"
10.end if
4.set rs=nothing
5.%>
6.<!--#include file="conn_close.asp"-->
   其它代码也不讲介绍了,就介绍一下第5行,调用带参数的存储过程,参数与存储过程名之间用空格分隔,多个参数,参数之间用","进行分隔.处理返回值rs("ck_ok")为1还是2,为1表示登录不成功,为2表示登录成功.

  重申一下这只是最最简单的存储过程创建与调用,存储过程能有非常强大的功能,关于更高深的存储过程编程可参考sql server的联机文档或到网上搜索.