由于工作缘故,需要解决一个sql自定义函数,后来在网上查了很多才明白了其中的道理,我找到了自定义函数的语法格式,写法和调用方法
?
语法格式:
??? 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)
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|