我写了一个函数,虽然可以创建但是无法运行,似乎在编写上还有很多问题,请大家帮我看看。create function khbl(@agent_code varchar(10)) returns decimal(17,2)
begin
declare @lives decimal(17,2)
if dbo.hty(@agent_code) <=2
select @lives = lives / dbo.hty(@agent_code) * 3 from prdtab_sh
else
select @lives = lives from prdtab_sh declare @returnrate decimal(17,2)
if @lives < 9
set @returnrate = 0
else if @lives >= 9 and @lives <= 15
set @returnrate = 0.05
else
set @returnrate = 0.09
return @returnrate
end
我的目的是希望在输入@agent_code后,能先做@lives的运行判断,然后在确保lives的分类后再得到需要的@returnrate的结果。
由于自己初写函数,可能在运用和嵌套上有很多问题,麻烦大家能按照需求帮我修改一下,谢谢
begin
declare @lives decimal(17,2)
if dbo.hty(@agent_code) <=2
select @lives = lives / dbo.hty(@agent_code) * 3 from prdtab_sh
else
select @lives = lives from prdtab_sh declare @returnrate decimal(17,2)
if @lives < 9
set @returnrate = 0
else if @lives >= 9 and @lives <= 15
set @returnrate = 0.05
else
set @returnrate = 0.09
return @returnrate
end
我的目的是希望在输入@agent_code后,能先做@lives的运行判断,然后在确保lives的分类后再得到需要的@returnrate的结果。
由于自己初写函数,可能在运用和嵌套上有很多问题,麻烦大家能按照需求帮我修改一下,谢谢
改一个地方减少一次函数调用create function khbl(@agent_code varchar(10)) returns decimal(17,2)
begin
declare @lives decimal(17,2) declare @hty int --类型根据需要改
set @hty=dbo.hty(@agent_code) if @hty <=2
select @lives = lives / @hty * 3 from prdtab_sh
else
select @lives = lives from prdtab_sh declare @returnrate decimal(17,2)
if @lives < 9
set @returnrate = 0
else if @lives >= 9 and @lives <= 15
set @returnrate = 0.05
else
set @returnrate = 0.09
return @returnrate
end
else
select @lives = lives from prdtab_sh
--------------------------------------------------
如果是多条的话这里会有问题.
是什么,函数吗? if dbo.hty(@agent_code) <=2
select @lives = lives / dbo.hty(@agent_code) * 3 from prdtab_sh
else
select @lives = lives from prdtab_sh
----------------------------------------------------------------------------
这里的变量@lives只能获取最后一行的数值,是要这样的结果吗?
其他语句似乎没有问题?
select @lives = lives / dbo.hty(@agent_code) * 3 from prdtab_sh
else
select @lives = lives from prdtab_sh我想问一下,会不会有问题,该怎么修改,请大家帮助我,谢谢
有朋友说下面这个多条的话里会有问题
select @lives = lives / dbo.hty(@agent_code) * 3 from prdtab_sh
else
select @lives = lives from prdtab_sh我想问一下,会不会有问题,该怎么修改,请大家帮助我,谢谢------------------------------------------------------
1.保证这两句select都只返回一行数据,可以加where
2.用游标逐行运算