请找出答案 [英] Pls find out the answer

查看:80
本文介绍了请找出答案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码...

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆