存储过程语法规则及调用方式 sql
存储过程的理论性的东西我就不多说了!我就直接写它的简单应用把!
一:无参数存储过程:
1. 语法规则
create procedure 存储过程的名称
as
--如果不需要在应用程序中使用返回的行数,就添加上“set nocount on”
set nocount on
要执行的sql语句(这边可以写多条sql语句的)
go
1.1实例:创建一个叫pro_updt_1的存储过程
if exists(select * from sysobjects where name='pro_updt_1')
drop proc pro_updt_1
go
--上面的意思是当名叫pro_updt_1的存储过程存在的时候,就删除该存储过程
create procedure pro_updt_1 as set nocount on select * from table_a go
2.调用方法:exec 存储过程的名称
1.2实例:调用pro_updt_1存储过程
exec pro_updt_1
二:有输入参数的存储过程:
1.语法规则
create procedure 存储过程的名字
@定义的参数名称 参数类型,
@定义的参数名称 参数类型,
...........
as
要执行的sql语句(这边可以写多条sql语句的)
go
2.1实例:创建一个有输入参数叫pro_updt_2的存储过程
create procedure pro_updt_2 @number int , @name varchar(50) as set nocount on select * from table_a where number=@number and name=@name go
2.调用方法 (参数要按存储过程里的参数顺序写)
exec 存储过程的名称 参数1,参数2
2.2实例:调用 pro_updt_2存储过程
exec pro_updt_2 1,'李宁'
三:带输出参数的存储过程
1.语法规则(输出参数定义必须放在输入参数的最后)
create procedure 存储过程的名字
@定义的参数名称 参数类型,
@定义的参数名称 参数类型,
...........
@定义的参数名称 参数类型 output,
@定义的参数名称 参数类型 output,
。。。。。
as
要执行的sql语句(这边可以写多条sql语句的)
go
3.1实例:两个值求和与求差的存储过程
create procedure pro_updt_3 @number1 int, @number2 int, @sum int output, @jsum int output as set nocount on select @sum=@number1+@number2 select @jsum=@number1-@number2 go
2。调用方法:
declare 参数名1 参数类型
declare 参数名2 参数类型
declare 参数名3 参数类型
declare 参数名4 参数类型
set 参数名1=值
set 参数名2=值
set 参数名4=值
exec pro_updt 参数名1,参数名2,参数名3 output,参数名4 output
--下面这句是显示出输出值
print convert(char(5),参数名3) +convert(char(5),参数名4)
3.2实例:调用pro_updt_3存储过程
declare @number1 int declare @number2 int declare @sum int declare @jsum int set @number1=10 set @number2=2 set @sum=6 set @jsum=2 exec pro_updt_3 @number1,@number2,@sum output,@jsum output print convert(char(5),@sum)+convert(char(5),@jsum)

浙公网安备 33010602011771号