SQLServer自定义函数学习

SQLServer自定义函数学习,第1张

概述SQL Server 2000 允许用户创建自定义函数,自定义函数可以有返回值。  自定义函数分为:标量值函数或表值函数  如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。可以使用多条 Transact-SQL 语句定义标量值函数。  如果 RETURNS 子句指定 TABLE,则函数为表值函数。  表值函数又可分为:内嵌表值函数(行内函数)或多语句函数  如果 RETURNS

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自定义函数学习所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1173973.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存