存储过程

SQlserver的存储过程

     说白了,就是一个批处理过程。

     就是一堆SQl语句连续执行,里面可能有一些变量、流程控制,显示等。


所以首先定义一个存储过程,它就有了一批处理名,然后再调用它,可以带一些参数。


  1. use Sales  
  2. go  
  3. create procedure demo_proc  
  4. (@name char(16)='SQL Server',@major int=2005,@minor int=0)  
  5. as  
  6.     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 子句的结果,然后

                         将这些结果插入目标表或视图。


结果如下:




存储过程就这么回事,就一批处理过程。

只不过深究其中的语法有很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值