我有一个存储过程,SP1里面是调用了4个存储过程
sp1exec sp001 @startdate,@enddate,@data_unit_type,@data_unit_code,'',@task_id,@return_status output,@error_level output,@error_sqlcode output,@error_message output
if @return_status=-1 returnexec sp002 @startdate,@enddate,@data_unit_type,@data_unit_code,'',@task_id,@return_status output,@error_level output,@error_sqlcode output,@error_message output
if @return_status=-1 returnexec sp003 @startdate,@enddate,@data_unit_type,@data_unit_code,'',@task_id,@return_status output,@error_level output,@error_sqlcode output,@error_message output
if @return_status=-1 returnexec sp004 @startdate,@enddate,@data_unit_type,@data_unit_code,'',@task_id,@return_status output,@error_level output,@error_sqlcode output,@error_message output
if @return_status=-1 return后来运行的时候报错,我想在这个每个存储过程调用每个存储过程如果报错了则返回一个报错信息,该如何加啊??

解决方案 »

  1.   

    create proc test
        @aa int
    as
        --你的操作
         if @@error=0
            return 1   --成功
         else
            return 0   --失败
    godeclare @e int
    exec @e=test @aa
    if @e=0
       print '失败'
      

  2.   


    declare @error_level_sp1 int, @error_sqlcode_sp1 varchar(512), @error_message_sp1 varchar(512)
    declare @error_level_sp2 int, @error_sqlcode_sp2 varchar(512), @error_message_sp2 varchar(512)
    declare @error_level_sp3 int, @error_sqlcode_sp3 varchar(512), @error_message_sp3 varchar(512)
    declare @error_level_sp4 int, @error_sqlcode_sp4 varchar(512), @error_message_sp4 varchar(512)exec   sp001   @startdate,@enddate,@data_unit_type,@data_unit_code,'',@task_id,@return_status   output,@error_level   output,@error_sqlcode   output,@error_message   outputselect @error_level_sp1=@error_level, @error_sqlcode_sp1=@error_sqlcode, @error_message_sp1=@error_message
    if   @return_status=-1   return exec   sp002   @startdate,@enddate,@data_unit_type,@data_unit_code,'',@task_id,@return_status   output,@error_level   output,@error_sqlcode   output,@error_message   output
    select @error_level_sp2=@error_level, @error_sqlcode_sp2=@error_sqlcode, @error_message_sp2=@error_message
    if   @return_status=-1   returnexec   sp003   @startdate,@enddate,@data_unit_type,@data_unit_code,'',@task_id,@return_status   output,@error_level   output,@error_sqlcode   output,@error_message   output
    select @error_level_sp3=@error_level, @error_sqlcode_sp3=@error_sqlcode, @error_message_sp3=@error_message
    if   @return_status=-1   returnexec   sp004   @startdate,@enddate,@data_unit_type,@data_unit_code,'',@task_id,@return_status   output,@error_level   output,@error_sqlcode   output,@error_message   output
    select @error_level_sp4=@error_level, @error_sqlcode_sp4=@error_sqlcode, @error_message_sp4=@error_message
    if   @return_status=-1   return根据错误变量即可获知。
      

  3.   


    自己给出错误提示消息消息
    declare @count int 
    select @count=count(*) from jobs where max_lvl>1000 
    if @count=0 
    raiserror('有%d个max_lvl>1000的工作',16,1,@count) 
    执行后将返回: 
    ------------------------------------------------------------- 
    服务器: 消息 50000,级别 16,状态 1,行 5 
    有0个max_lvl>1000的工作 根据错误号,输出各种语言的错误消息,如本例中错误号为2052
    select description from master..sysmessages where msglangid=2052 
    这个是输出汉语的错误消息
    select description from master..sysmessages where error=205 
    and msglangid=2052