日期:2014-05-17  浏览次数:20396 次

带输出参数存储过程 sql拼接问题
存储过程中有个输出参数 并且要判断 这个输出参数为null的话 就返回001
下面是我胡写的 sql处于入门级别的呵呵 大家帮忙改下
SQL code

ALTER procedure [dbo].[Pro_DataMax]
@TableName       varchar(50),--表名
@zd              varchar(50),--Max字段
@Maxid           int output
as
exec('select '+@Maxid+'= Max(Convert(int,'+@zd+')) from'+@TableName)
if @maxid in null
select @maxid=001


这样写 调用的时候直接报错

------解决方案--------------------
SQL code
ALTER  procedure [dbo].[Pro_DataMax]
@TableName       varchar(50),--表名
@zd              varchar(50),--Max字段
@Maxid           int output
AS
BEGIN 
declare @num int, @sqls nvarchar(4000) 

--exec('select @Maxid= Max(Convert(int,'+@zd+')) from'+@TableName)
set @sqls='select @a= Max(Convert(int,'+@zd+')) from '+@TableName 
exec sp_executesql @sqls,N'@a int output',@Maxid output 


if @maxid is null
select @maxid=1
END