+ -
当前位置:首页 → 问答吧 → 帮忙看下此存储过程

帮忙看下此存储过程

时间:2011-11-12

来源:互联网

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是否得到了正确结果,但是最终输输出的是'直接删除',这个结果是不对的,应该输出'有内容',请帮我看一下错误出在哪里!谢谢!

作者: xingxiaobai   发布时间: 2011-11-12

这里直接是不能print的,要做一个输出的参数来看这个存储过程是否删除或未删除。

create proc get_c
@in int,
@out varchar(100) output
as
begin
set @out = '删除错误'
end
go

declare @ret varchar(100)
exec get_c null,@ret output
select @ret

作者: AcHerat   发布时间: 2011-11-12

SQL code
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

作者: roy_88   发布时间: 2011-11-12

你在过程传参数时,恐怕还得传递许多其他参数,而不是只传来一个表名.

作者: qianjin036a   发布时间: 2011-11-12