请找出答案 [英] Pls find out the answer
本文介绍了请找出答案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的代码...
This is my code...
alter function anf
(
@mdvn int,
@fdate datetime,
@tdate datetime
)
returns int
as
begin
declare @vdate date
declare @fedddate date
declare @tedddate date
declare @tvdate date
set @vdate=dateadd(dd,-91,@fdate)
set @tvdate=dateadd(dd,36,@tdate)
set @fedddate=dateadd(dd,20,@fdate)
set @tedddate=dateadd(dd,310,@tdate)
declare @REGDT int
declare @ANC int
declare @TT1 int
declare @TT2 int
declare @IFA int
declare @BP int
declare @HB int
declare funcurz cursor static for
select dvn_cd,phc_cd,hsc_cd,sum(REGDT) as Regdt,SUM(ANC) as ANC,SUM(TT1) as TT1, SUM(TT2)as TT2,
SUM(IFA) as IFA, SUM(BP) as BP, SUM(HB) as HB from
(
select dvn_cd,phc_cd,hsc_cd,
case when ANEDD IS null then 0 else 1 end as REGDT,
case when visit_no=3 and ANEDD between @vdate and @tvdate then 1 else 0 end as ANC,
case when TTB=1 and ANEDD between @fdate and @tdate then 1 else 0 end as TT1,
case when TTB>2 and ANEDD between @fdate and @tdate then 1 else 0 end as TT2,
case when IFA=100 and ANEDD between @fdate and @tdate then 1 else 0 end as IFA,
case when BP>='140/90' and ANEDD between @fdate and @tdate then 1 else 0 end as BP,
case when HB<11 and ANEDD between @fdate and @tdate then 1 else 0 end as HB
from ANVisits3 a where DVN_CD=@mdvn and ANEDD between @fedddate and @tedddate
)a group by dvn_cd,phc_cd,hsc_cd
open funcurz
begin
fetch next from funcurz into @mdvn,@REGDT,@ANC,@TT1,@TT2,@IFA,@BP,@HB
while @@FETCH_STATUS=0
begin
print 'DVN : '+ convert(varchar(20),@mdvn)+',FDT :'+convert(varchar(20),@fdate)+
',TDT :'+convert(varchar(20),@tdate)+',RGDT:'+convert(varchar(20),@REGDT)+
',ANC :'+convert(varchar(20),@ANC)+',TT1 :'+convert(varchar(20),@TT1)+
',TT2 :'+convert(varchar(20),@TT2)+',IFA :'+convert(varchar(20),@IFA)+
',BP :'+convert(varchar(20),@BP)+',HB:'+ convert(varchar(20),@HB)
fetch next from funcurz into @mdvn,@REGDT,@ANC,@TT1,@TT2,@IFA,@BP,@HB
END
end
close funcurz
deallocate funcurz
return (int)
end
------------- -------------------------------------------------- ---------------------------------
i得到了错误为
------------------------------------------------------------------------------------------------
i got the error as
Msg 443, Level 16, State 14, Procedure anf, Line 45
Invalid use of a side-effecting operator 'PRINT' within a function.
Msg 207, Level 16, State 1, Procedure anf, Line 55
Invalid column name 'int'.
推荐答案
的哪一部分在一个函数中无效使用副作用运算符'PRINT'。 你有困难吗?它说你不能在UDF中使用带副作用的函数。
UDF必须是确定性的,因此不允许它们使用任何产生副作用的函数。请随时阅读: http://technet.microsoft.com /en-us/library/ms187440%28v=sql.105%29.aspx [ ^ ]。
问候,
- Manfred
这篇关于请找出答案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文