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