create Proc  P_Check1 
    @DelTable varchar(50)               
    as
    declare @count int,
            @count1 int,   
            @DelID  varchar(50),        
            @DelIDValue varchar(50),    
            @CheckTable varchar(50),    
            @CheckField varchar(50),    
            @Mess varchar(50),          
            @sql nvarchar(4000), 
            @sql1 varchar(4000) output
           
     begin   --判断表是否存在    
     select @count=COUNT(1) from MasterCheck where DelTable=@DelTable
     if @count>0
       begin --检测
         select @DelID=DelID,@DelIDValue=DelIDValue,@CheckTable=CheckTable,@CheckField=CheckField,@Mess=Mess
         from RecordCheck where DelTable = @DelTable
         print(@CheckField)
         set @sql='select @count1=COUNT(1) from '+@CheckTable+' where '+@CheckField+'='''+@DelIDValue+''''
         print(@sql)
         exec sp_executesql @sql,N'@count1 int',@count1 
         print(@count1)
         if @count1>0
         print('有内容')
         else
         print('直接删除')
       end
     else
     print('此表不存在')
     end
     go
     print(@sql)和print(@count1)都没法输出,我也不知道count1是否得到了正确结果,但是最终输输出的是'直接删除',这个结果是不对的,应该输出'有内容',请帮我看一下错误出在哪里!谢谢!

解决方案 »

  1.   

    这里直接是不能print的,要做一个输出的参数来看这个存储过程是否删除或未删除。create proc get_c
    @in int,
    @out varchar(100) output
    as
    begin
    set @out = '删除错误'
    end
    godeclare @ret varchar(100)
    exec get_c null,@ret output
    select @ret
      

  2.   

    create Proc P_Check1  
      @DelTable varchar(50)   
      as
      declare @count int,
      @count1 int,   
      @DelID varchar(50),   
      @DelIDValue varchar(50),   
      @CheckTable varchar(50),   
      @CheckField varchar(50),   
      @Mess varchar(50),   
      @sql nvarchar(4000),  
      @sql1 varchar(4000) output
        
      begin --判断表是否存在   
      select @count=COUNT(1) from MasterCheck where DelTable=@DelTable
      if @count>0
      begin --检测
      select @DelID=DelID,@DelIDValue=DelIDValue,@CheckTable=CheckTable,@CheckField=CheckField,@Mess=Mess
      from RecordCheck where DelTable = @DelTable
      print(@CheckField)
      set @sql='select @count1=COUNT(1) from '+@CheckTable+' where '+@CheckField+'='''+@DelIDValue+''''
      print(@sql)
      exec sp_executesql @sql,N'@count1 int output',@count1  output
      print(@count1)
      if @count1>0
      print('有内容')
      else
      print('直接删除')
      end
      else
      print('此表不存在')
      end
      go
      

  3.   

    create Proc P_Check1  
      @DelTable varchar(50)   
      as
      declare @count int,
      @count1 int,   
      @DelID varchar(50),   
      @DelIDValue varchar(50),   
      @CheckTable varchar(50),   
      @CheckField varchar(50),   
      @Mess varchar(50),   
      @sql nvarchar(4000),  
      @sql1 varchar(4000) output
        
      begin --判断表是否存在   
      select @count=COUNT(1) from MasterCheck where DelTable=@DelTable
      if @count>0
      begin --检测
      select @DelID=DelID,@DelIDValue=DelIDValue,@CheckTable=CheckTable,@CheckField=CheckField,@Mess=Mess
      from RecordCheck where DelTable = @DelTable
      print(@CheckField)
      set @sql='select @count1=COUNT(1) from '+@CheckTable+' where '+@CheckField+'='''+@DelIDValue+''''
      print(@sql)
      exec sp_executesql @sql,N'@count1 int output',@count1  output
      print(@count1)
      if @count1>0
      print('有内容')
      else
      print('直接删除')
      end
      else
      print('此表不存在')
      end
      go