Vb.net数据库编程(05):SQlserver的存储过程
SQlserver的存储过程 说白了,就是一个批处理过程。 就是一堆SQl语句连续执行,里面可能有一些变量、流程控制,显示等。
所以首先定义一个存储过程,它就有了一批处理名,然后再调用它,可以带一些参数。
use Sales go create procedure demo_proc (@name char(16)='SQL Server',@major int=2005,@minor int=0) as print @name + STR(@major,5)+'.'+STR(@minor,5) 变量以@开始,@name char(16)='SQL Server'就是变量name,类型char,16字长,默认值SQL Server。 后面print就是显示 ,STR就是把数据字转换为字符串,总长度(含小数点)为5.
第二步就是执行它:
后面不跟参数时,就按照原参数样式(默认值)来执行。 后面的跟参数就按参数进行显示,其中default就是原来的默认值。没参数也是按原来 的默认值。
下面再创建一个存储过程,并执行 --创建存储过程 use Sales go create procedure GetStudentCount @v_math int as print '数学成绩高于输入参数的学生有:' select count(*) from grade where 数学>@v_math --下面是调用过程 execute GetStudentCount 60 结果就是:
另一个存储过程例子 有时把用户名和密码保存在一个表中。 当用户进来后,进行验证。 看下这个存储过程: --先创建一个存在用户名和密码的表 use Sales go create table WebUsers ( username varchar(20),userpass varchar(10) ) insert into webusers values('aa','aa') insert into webusers values('bb','bb') --然后,创建带输入输出参数的存储过程 create procedure sp_CheckPass (@CHKName varchar(30),@CHKPass varchar(30),@ISValid varchar(12) output) as if exists(select UserName from WebUsers where UserName=@CHKName And UserPass=@CHKPass) select @ISValid='Good' else select @ISValid='Bad' --测试存储过程 declare @aa varchar(12) exec sp_CheckPass 'aa','aa',@aa output select @aa as '返回值' 注:上面output是作用输出的。 官方解释:返回受 INSERT、UPDATE、DELETE 或 MERGE 语句影响的各行中的信息,或返回基于受这些语句影响的各行的表达式。 这些结果可以返回到处理应用程序,以供在确认消息、存档以及其他类似的应用程序要求中使用。也可以将这些结果 插入表或表变量。另外,您可以捕获嵌入的 INSERT、UPDATE、DELETE 或 MERGE 语句中 OUTPUT 子句的结果,然后 将这些结果插入目标表或视图。
结果如下:
存储过程就这么回事,就一批处理过程。 只不过深究其中的语法有很多。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |