
sql Server 2000 允许用户创建自定义函数,自定义函数可以有返回值。
自定义函数分为:标量值函数或表值函数
如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。可以使用多条 Transact-sql 语句定义标量值函数。
如果 RETURNS 子句指定 table,则函数为表值函数。
表值函数又可分为:内嵌表值函数(行内函数)或多语句函数
如果 RETURNS 子句指定的 table 不附带列的列表,则该函数为内嵌表值函数。
如果 RETURNS 子句指定的 table 类型带有列及其数据类型,则该函数是多语句表值函数。
标量值函数示例
代码如下:
CREATE FUNCTION dbo.Foo()
RETURNS int
AS
BEGIN
declare @n int
select @n=3
return @n
END
内嵌表值函数示例
代码如下:
CREATE FUNCTION dbo.Foo()
RETURNS table
AS
return select ID, Title from msgs
内嵌表值函数只有一个 select 语句。
多语句表值函数示例(部分)
代码如下:
CREATE FUNCTION fn_FindReports (@InEmpID nchar(5))
RETURNS @retFindReports table (empID nchar(5) primary key,
empname nvarchar(50) NOT NulL,
mgrID nchar(5),
Title nvarchar(30))
...
语法格式:
CREATE FUNCTION <函数名称>
(
-- 函数的参数(可以多个)
<@param1, sysname, @p1> <data_type_for_param1, , int>,
<@param2, @p2> <data_type_for_param2, char>
)
RETURNS
<@表变量名> table
(
-- 返回的虚拟表中的字段 字段名 类型
<Column_1, c1> <Data_Type_For_Column1,
<Column_2, c2> <Data_Type_For_Column2, int>
)
AS
BEGIN
-- 函数体,里面可以定义一些变量,总之最后返回的应该是个结果集
RETURN
END
GO
写法(工作中的例子):
CREATE FUNCTION getcallbackdata
(@mycallerno varchar(30),
@myID int
)
RETURNS @callbdata table
(
callerarea varchar (10),
status int,
route int,
prefix varchar(20),
pcell int,
prate money,
prov varchar(20) NulL
)
AS
BEGIN
DECLARE @arecode varchar(10),
@status int,
@route int,
@prefix varchar(20),
@pcell int,
@prate money,
@prov varchar(20)
select @arecode=areacode from sd_areaplay
select @status=state from sd_account where pin='@mycallerno'
select @prefix=prefix from sd_platformrouter
select @pcell=feesec,@prate=afterfreefee from sd_payplan
insert into @callbdata values(@arecode,@status,@route,@prefix,@pcell,@prate,@prov);
RETURN
END
GO
调用方法:
select callerarea,status,route,prefix,pcell,prate,prov from t.getcallbackdata('mycallerno',mypID)
实际上,使用自定义函数还是很简单的!
总结以上是内存溢出为你收集整理的SQLServer自定义函数学习全部内容,希望文章能够帮你解决SQLServer自定义函数学习所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)