SQL Server 存储过程相关语法

一、定义变量及赋值

1.1 普通变量

--定义变量
declare @parameter_set int
declare @parameter_select varchar(20)
declare @parameter_update varchar(20)
--set 关键字赋值
set @parameter_set = 1;
--select 赋值
select @parameter_select = '';
select @parameter_select = Name from Member where Account = ''
--update 赋值
update Member set @parameter_update = Name where ID='';

 1.2 表变量,赋值和临时表

--定义表变量
declare @tab table(
    Id varchar(36) not null,
    Name varchar(10) null
)
--赋值
insert into @tab values('123','312');
insert into @tab select ID,Name from Member;
--创建临时表
--# 表示局部的生命周期临时表
create table #table_1(
    Id varchar(36) not null,
    Name varchar(10) null
)
--## 表示全局的生命周期临时表
create table ##table_2(
    Id varchar(36) not null,
    Name varchar(10) null
)
--赋值
insert into #table_1(Id,Name) values('123','312');
insert into ##table_2 select ID,Name from Member;

二、条件、循环、分支语句、异常处理

2.1 条件 if else

if(10>2)
    begin
        print('true');
    end
else
    begin
        print('false');
    end

2.2 循环 while

declare @num int
declare @sum int
set @num=1 
set @sum=0 
while(@num<=10)
    begin
        set @sum+=@num 
        set @num+=1 
    end
print @sum

2.3 分支 case when then else

declare @case_value int
declare @result varchar(10)
set @result = case
                when @case_value = 1 then '1'
                when @case_value = 2 then '2'
                when @case_value = 3 then '3'
                when @case_value = 4 then '4'
                else'0'
              end
print @result

2.4 异常处理try catch

begin try
    declare @try_int int;
    set @try_int = 1 / 0;
    print('1');
end try
begin catch
--这几个函数只能用在Catch里面!
    print(error_number());print(error_severity());
    print(error_state());print(error_procedure());
    print(error_line());print(error_message());
end catch

三、定义存储过程

3.1 创建存储过程及调用

--无参数无返回结果
create procedure p1
as 
begin 
    print('执行过程');
end
go
--带参数
create procedure p2
    @parameter_1 int
as 
begin 
    print(@parameter_1);
end

3.2 调用

p2 为存储过程名称,后面跟参数

--调用
execute p2 1

3.3 使用output或retuen 返回结果

3.3.1 output: 可以有多个,调用时结果结果的参数也要标识output

-- output 
create procedure p3
    @parameter_1 int,
    @parameter_out int output,
    @parameter_out_1 int output
as 
begin 
    set @parameter_out = @parameter_1 + 1
    set @parameter_out_1 = 10
end
--调用
declare @r1 int
declare @r2 int
execute p3 1,@r1 output,@r2 output;
print @r1
print @r2
go

3.3.1 return

-- return
create procedure p4
    @parameter_1 int
as 
begin 
    return @parameter_1 + 1;
end
--调用
declare @result int
execute @result = p4 10
print @result
go

转载于:https://www.cnblogs.com/haosit/p/10398677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值