sql server 存储过程用到的知识

本文详细介绍了SQL Server中存储过程的使用,包括无参、入参、出参的传参方式,存储过程的语法结构,用return、输出参数、select返回值的不同方式。还涉及调用存储过程的方法,以及存储过程中变量定义、赋值、打印语句、循环、条件语句、游标、事务、全局变量、异常处理和常用函数的使用。文章提供了多个示例,帮助理解存储过程的各个方面。
摘要由CSDN通过智能技术生成

1.传参方式:

1. 无参

功能:查看作业类型表的所有信息

create procedure waw_showTaskType

as

begin

select * from TaskType

end

 

2. 入参

功能:根据TaskID查看该类型的信息

create procedure waw_showTaskTypeById

(

@taskId int

)

as

begin

select * from TaskType where TaskID=@taskId

end

 

3. 出参

功能:根据taskId查看该作业类型的名称

create procedure waw_showTaskNameById

(

@taskId int,

@taskName varchar(30) output

)

as

begin

select @taskName=taskname from TaskType where TaskID=@taskId

End

调用存储过程:

declare @taskId int,

        @taskName varchar(30)

set @taskId=1

exec waw_showTaskNameById @taskId,@taskName output

print @taskName

注意:output不能省略,否则不能传出

传参时也可以不按照参数顺序,而使用参数名=参数值的写法:

exec waw_showTaskNameById @taskId=@taskId,@taskName=@taskName output

注意:一旦有一个参数采用参数名=参数值的写法,则所有的参数都要这样写.

2.语法结构:

Create  proc|procedure 存储过程名

(

参数1,

参数2,

.......

)

as

begin

变量定义部分

业务逻辑部分

异常处理部分

end

3. 返回值方式

存储过程有三种返回方式:

1. return返回数字型数据

2. 用返回参数(output)返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行)

3. 直接在存储过程中用select返回结果集,可以是任意的select语句,这意味着是任意的返回结果集.

3.1return返回数字型数据

功能:根据作业类型id判断creater是否为’’(空字符串)

create proc waw_isNullOfCreaterOfTaskType

(

@taskId int

)

as

begin

if (select creater from taskType where taskid=@taskId) =''

return 0

else return 1

end

3.2 用返回参数返回结果

功能:根据taskId查看该作业类型的名称

create procedure waw_showTaskNameById

(

@taskId int,

@taskName varchar(30) output

)

as

begin

select @taskName=taskname from TaskType where TaskID=@taskId

End

3.3 直接用select返回结果集

功能:查看作业类型表的所有信息

create procedure waw_showTaskType

as

begin

select * from TaskType

End

4. 调用存储过程

sql server查询窗口中调用存储过程的语法为:

Exec 存储过程名 参数1,参数2......

在程序中调用查看相关api

5.存储过程中用到的其他功能

5.1 变量定义

格式:Declare @变量名 变量类型 如:

Declare @userId int

 

5.2变量赋值:
5.2.1简单赋值

Declare @a int

Set @a=5

print @a

5.2.2 select赋值

declare @user1 nvarchar(50)

select @user1='张三'

print @user1

5.2.3 update赋值

declare @user3 nvarchar(50)

update ST_User set @user3 = Name where ID=1

print @user3

 

5.3.打印语句
5.3.1 print

declare @a varchar(20)

set @a='fdsfdsf'

Print @a

5.3.2 select

declare @a varchar(20)

set @a='fdsfdsf'

select @a

5.4 循环语句

While 条件

begin

循环体

end

实例如下:

--while循环计算1到100的和

declare @a int

declare @sum int

set @a=1

set @sum=0

while @a<=100

begin

    set @sum+=@a

    set @a+=1

end

print @sum

5.5 条件语句
5.5.1 if else条件分支

if(1+1=2)

begin

    print '对'

end

else

begin

    print '错'

end

 

5.5.2 when then 条件分支

declare @today int

declare @week nvarchar(3)

set @today=3

set @week=case

when @today=then '星期一'

when @today=then '星期二'

when @today=then '星期三'

when @today=then '星期四'

when @today=then '星期五'

when @today=then '星期六'

when @today=then '星期日'

else '值错误'

end

print @week

5.6游标
5.6.1语法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值