1. 存储过程
1.1 创建语法
create proc | procedure pro_name [{@参数数据类型} [=默认值] [output], {@参数数据类型} [=默认值] [output], .... ] as SQL_statements
1.2 不带参数
--创建无参数存储过程 create procedure myProc as begin select * from Dim_店铺 end --执行存储过程 execute myProc; --删除存储过程 drop procedure myProc;
1.3 带输入参数
--有输入参数的存储过程 create procedure myProcedure @param1 nvarchar(20)='001', @param2 nvarchar(20)='丽晶' as begin select * from Dim_店铺 c where c.店铺ID = @param1 or c.组织架构 = @param2 end --执行有输入参数的存储过程 execute myProcedure '002','奥卡'
1.4 带输入输出参数
--有输入输出参数的存储过程 create procedure getArea @shopId nvarchar(64), @area nvarchar(32) output as begin if (@shopId is not null and @shopId <> '') begin select @area=区域 from Dim_店铺 where 店铺ID = @shopId end else begin set @area = '空' end end --声明变量 declare @a varchar(20); execute getArea '2010315', @a output; print @a
2.存储函数
基本概念:与存储过程不一样,存储函数只能返回单一值或表。因为函数不能执行insert、update、delete操作,在SQL Server中,根据函数返回值形式的不同,我们可以把自定义函数分为3种类型。
2.1 标量型函数(Scalar Function):返回一个确定类型的标量值。
2.2 内联表值型函数(Inline Table valued Function):返回的是一个表,相当于一个参数化的视图。
2.3 多声明表值型函数(Multi-statement Table-Valued Function):可以看做标量型和内联表值型函数的结合体。返回值是一个表,但它和标量型函数一样,有一个begin-end语句括起来的函数体,该函数体包含插入语句,向返回表中插入数据。