Sql Server中存储过程和存储函数

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语句括起来的函数体,该函数体包含插入语句,向返回表中插入数据。


猜你喜欢

转载自blog.csdn.net/tanshooo/article/details/80182267