[易飞]自定义报表之调用自定义函数

上一次发表衍生字段的使用方法,在衍生字段中可以调用系统函数或者进行四则运算。本人的理解都是转换成可运行的SQL 语句。故可以在数据库执行函数都应该可以被调用,系统函数可以调用那自定义函数呢?

答案是对的。

首先进行一个简单的测试:日期转换格式自定义函数 20100611—2010-06-11

创建函数

create function Date10

(

@date8 nvarchar(8)

)returns nvarchar(10)

begin

declare @tmp nvarchar(10)

if @date8 is not null

begin

set @tmp=substring(@date8,1,4)+'-'+substring(@date8,5,2)+'-'+substring(@date8,7,2)

end

else

begin

set @tmp=''

end

return @tmp

end

[易飞]自定义报表之调用自定义函数

注意 必须加上ZE表示当前数据,因为易飞在处理集团业务的时候 多公司就有多数据库(这点很无奈-不知道神码开发人怎么想的估计是脑子进水了)

否则就会找不到该函数(当然系统函数就不必要加)

再建一个自定义函数看看:

根据客户订单别 订单号 订单序号-查询到相关的工单。通常是一对一,但如果是拆单 这个可能一对多

CREATE function GetWO(

@TD001 AS VARCHAR(10),@TD002 AS VARCHAR(10),@TD003 AS VARCHAR(10)

)returns varchar(100)

as

begin

declare @remarks varchar(100) ,@TA001 nvarchar(10),@TA002 VARCHAR(10)

Declare MyCursor CURSOR

local static for select TA001,TA002 FROM MOCTA WHERE [email protected] and [email protected] and [email protected]

Open MyCursor

while 1=1

begin

fetch MyCursor into

@TA001,

@TA002

if @@fetch_status<>0

break

IF @TA001 is not null

begin

set @remarks=rtrim(@TA001)+'-'+rtrim(@TA002)+' '

end

end

close MyCursor

deallocate MyCursor

return @remarks

end

[易飞]自定义报表之调用自定义函数

好了 看看效果吧!

[易飞]自定义报表之调用自定义函数