一、定义变量及赋值
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 --调用 execute p2 1 go --带返回值 --返回带有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 --用return返回结果 create procedure p4 @parameter_1 int as begin return @parameter_1 + 1; end --调用 declare @result int execute @result = p4 10 print @result go
3.2 函数
a. 标量值函数
--创建标量值函数 create function func_1(@func_parameter_1 int,@func_parameter_2 int) returns int as begin return 1 end
b. 内联表值函数
--内联表值函数 create function func_2 (@parameter_id varchar(36)) returns table as return (select * from Member where ID = @parameter_id)
c. 多语句表值函数
--多语句表值函数 create function func_3(@parameter_id varchar(36)) returns @tab_1 table( ID varchar(36), Name varchar(10) ) as begin insert into @tab_1(ID,Name) select ID,Name from Member where ID = @parameter_id return end
3.3 触发器
--基本语法 create trigger Trigger_Name on TableName for type --type:insert,update,delete as --执行逻辑
a. insert 触发器获取当前值
create trigger Member_Inserts on Member for insert as declare @id varchar(36) select @id = id from inserted; insert into Member(ID,Sex) values(@id+‘insert‘,0);
b. update 触发器获取修改前的值和修改后的值:update操作等于先删除记录,再插入新的记录
create trigger Member_Updates on Member for update as declare @idnew varchar(36); declare @idold varchar(36); select @idnew = id from inserted;--inserted在修改时存放的新值的临时表 select @idold = id from deleted;--deleted在修改时存放的旧值的临时表 insert into Member(ID,Sex) values(@idnew+‘new‘,0); insert into Member(ID,Sex) values(@idold+‘old‘,0);
3.4 事务
--基础语法 begin tran if(@@ERROR <> 0) begin rollback tran; end commit tran
原文:https://www.cnblogs.com/haosit/p/10398677.html