[易飞]自定义报表之调用自定义函数
上一次发表衍生字段的使用方法,在衍生字段中可以调用系统函数或者进行四则运算。本人的理解都是转换成可运行的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
好了 看看效果吧!