create   PROCEDURE cf_Add_Table_id@AddId nvarchar(30),      --要增加字段
@TableName nvarchar(50),  --所操作表名
@newCarId nvarchar(20) output         --生成@TableName的最新ID/**
***自动计算表的ID
**/
ASdeCLARE @sql nvarchar(500)
set @sql='select @newCarId=convert(nvarchar,max('+@AddId+'))+1 from '+ @TableName
exec sp_executesql @sql,N'@newCarId nvarchar(20) output',@newCarId output

解决方案 »

  1.   

    create PROCEDURE cf_Add_Table_id
    @AddId nvarchar(30),      --要增加字段
    @TableName nvarchar(50),  --所操作表名
    @newCarId nvarchar output --生成@TableName的最新ID
    as
    begin
      declare @sql nvarchar(4000)
      set @sql='select @newCarId=(max('+@AddId+')+1) from '+ @TableName
      exec sp_executesql @sql,'@newCarId nvarchar out',@newCarId out
    end
    go
      

  2.   

    libin_ftsafe(子陌红尘) 服务器: 消息 214,级别 16,状态 3,过程 sp_executesql,行 15
    过程需要参数 '@parameters' 为 'ntext/nchar/nvarchar' 类型。
     vivianfdlpw()  这个对了谢谢两位老大,就是有点不明白exec sp_executesql @sql,'@newCarId nvarchar out',@newCarId out
    为什么不是 exec(@sql)