一、定义变量及赋值
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