SQL标量值函数和表值函数
概念:
1.表值函数是返回一个TABLE类型,TABLE类型相当于一张存储在内存中的一张虚拟表。(集合)
2.标量值函数返回指定类型数据。(单个值)
--描述:表值函数
--作者:Eric He
--日期:2012-05-06
CREATE FUNCTION Temp(@NO NUMERIC(14,0))
RETURNS @table TABLE
(
[NO] BIGINT IDENTITY (1,1),
A char(7),
B char(8),
C char(9)
)
AS
BEGIN
IF @NO IS NULL
SET @NO=0
WHILE @NO>0
BEGIN
INSERT INTO @table(A,B,C)
VALUES(@NO,@NO,@NO)
SET @NO=@NO-1
END
RETURN
END
/*调用:SELECT *FROM Temp(10)*/
--描述:标量函数
--作者:Eric He
--日期:2012-05-06
CREATE FUNCTION GetState(@Name VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @result VARCHAR(50)
IF @Name IS NULL
SET @Name=''
IF @Name IS NOT NULL AND @Name<>''
BEGIN
/*
If @Name = 'SQDB'
SET @result='申请担保'
Else If @Name = 'ZSSL'
SET @result='正式受理'
Else If @Name = 'TGPS'
SET @result='通过评审'
Else If @Name = 'QYDB'
SET @result='签约担保'
ELSE
SET @result='没有对应的枚举项!'
*/
SELECT @result =
CASE @Name
WHEN 'SQDB' THEN '申请担保'
WHEN 'ZSSL' THEN'正式受理'
WHEN 'TGPS' THEN'通过评审'
WHEN 'QYDB' THEN'签约担保'
ELSE '没有对应的枚举项!'
END
END
RETURN @result
END
/*调用:SELECT dbo.GetState('sqdb') AS State*/
注意:函数前边一定要加上所有者:dbo (表值函数调用的时候不用加入)
作者:Eric He