-------------------------------
-------------------------------
--- Name: 函数
--- User: Lzw
--- Data: 2013年10月8日9:12:43
-------------------------------
-------------------------------
--函数:函数分为表值函数、标量值函数、聚合函数、系统函数,表值函数、标量值函数较常用。
--表值函数:以字符串格式返回结果。 例如:abcd,表值函数,123456,abcd表值函数123456
--标量值函数:以表格格式返回结果。 例如:
-- 序号 名称 规格
-- 1 1号 1*1
-- 2 2号 1*2
--下列有两个例子,分别是标量值函数、表值函数。
-----------------------------------标量值函数----------------------------------------------
--创建语法 Create Function fn_函数名(参数1 Int,参数2 nvarchar(100),参数3 decimal(38,2),参数n 参数类型,参数n+1 参数类型)
--returns 返回的结果类型(Int、Nvarchar(n)、DECIMAL(38,2)等等)
--As Begin 执行的代码 End
CREATE FUNCTION dbo.fn_BLZ(@Start DECIMAL(38,2),@End DECIMAL(38,2))
RETURNS DECIMAL(38,2)
AS
BEGIN
DECLARE @Sum DECIMAL(38,2)
SET @Sum=@Start+@End
RETURN @Sum
END
--标量值函数调用语法
--select dbo.函数名(参数1 Int,参数2 nvarchar(100),参数3 decimal(38,2),参数n 参数类型,参数n+1 参数类型)
SELECT dbo.fn_BLZ(1,2)
--删除函数
DROP FUNCTION dbo.fn_BLZ
--判断是否是整数,如果不是整数,返回值>0。
CREATE FUNCTION IsNumber(@StrVal nvarchar(max))
RETURNS INT
AS
BEGIN
DECLARE @Flag INT
SET @Flag=(SELECT PATINDEX('%[^0-9]%', @StrVal))
RETURN @Flag
END
--执行函数并执行函数返回的sql语句
create function fun_Result()
returns varchar(200)
as
begin
declare @sql varchar(200)
set @sql='select * from newsInfo'
return @sql
end
--执行函数并执行函数返回的sql语句
select dbo.fun_Result()
declare @sql nvarchar(200)
set @sql =(select dbo.fun_Result())
exec (@sql)
-----------------------------------表值函数----------------------------------------------
CREATE FUNCTION dbo.fn_BZ(@Id INT,@Name nvarchar(100))
RETURNS @table TABLE([ID] INT,[Name] nvarchar(100))
AS
BEGIN
INSERT INTO @table([Id],[Name])
SELECT 1,'1号' union
SELECT 2,'2号' union
SELECT 3,'3号' union
SELECT 4,'4号' union
SELECT @Id,@Name
return
END
--表值函数调用语法 select * form dbo.函数名(参数1 Int,参数2 nvarchar(100),参数3 decimal(38,2),参数n 参数类型,参数n+1 参数类型)
SELECT * FROM dbo.fn_BZ(5,'5号')
DROP FUNCTION dbo.fn_BZ