一、定义变量及赋值

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