0

我编写了一个存储过程并将 varchar(200) 变量作为返回变量,但在输出中显示为“将 varchar 值转换为整数时转换失败”,在过程中我没有转换为 int,但我面临错误

alter proc rulename @mfid varchar(20)
as
declare @ACF2 varchar(200)
begin 
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where      MFID=@mfid) > 0)
begin
set @ACF2='Apollo'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + 'GP'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + ',' + 'Tactical Comp'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + ',' + 'Unit Valuation'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + ',' + 'NPVS'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + ',' + 'Apollo Test'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + ',' + 'GP Test'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + ',' + 'Tactical Comp Test'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + ',' + 'Unit Valuation Test'
end
if((select count(distinct(Rulename)) as count1 from MainframeExtractsPLP where MFID=@mfid) > 0)
begin
set @ACF2= @ACF2 + ',' + 'NPVS Test'
end
return @ACF2
end
4

1 回答 1

6

存储过程的返回值是一个整数。您应该改用输出参数

create procedure rulename
  @mfid varchar(20),
  @ACF2 varchar(200) output
as

-- Initialise param to empty string
set @ACF2 = ''

begin
  if ...
    begin
      set @ACF2 = @ACF2 + '...'
    end
  .
  .
  .
end
于 2012-10-10T06:20:38.257 回答