例如:
go
create proc aaa
@tb varchar(max)
@name1 varchar (max)
@in1 int output
as
  exec('select '+@in1+'=[id] FROM '+tb+' WHRER [name1]='+@name1)
declare in1 int
exec aaa 'tb','张三',in1 output出错。
最后才发现时
exec('select '+@in1+'=[id] FROM '+tb+' WHRER [name1]='+@name1)这句话
'+@in1+'=[id] 还有 [name1]='+@name1
这样写,会出错的。请问怎么写才可以呢?

解决方案 »

  1.   

    create proc aaa
    @tb varchar(max),
    @name1 varchar(max),
    @in1 int output
    as
      declare @sql nvarchar(1000)
      set @sql='select @in1=[id] FROM '+@tb+' WHRER [name1]='''+@name1+''''
      exec sp_executesql @sql,N'@in1 int output',@in1 output
      

  2.   

    create proc aaa
    @tb varchar(max),
    @name1 varchar (max),
    @in1 int output
    as
    begin
    declare @sql varchar(8000)
    set @sql='select '+@in1+'=[id] FROM '+tb+' WHRER [name1]='+@name1
      exec(@sql)end
      

  3.   

      declare @sql nvarchar(1000)
      set @sql='select @in1=[id] FROM '+@tb+' WHRER [name1]='''+@name1+''''
      exec sp_executesql @sql,N'@in1 int output',@in1 output
      

  4.   

    create proc aaa
    @tb nvarchar(max),
    @name1 nvarchar(max),
    @in1 int output
    as
      declare @sql nvarchar(2000)
      set @sql='select @in1=[id] FROM '+@tb+' WHRER [name1]='''+@name1+''''
      exec sp_executesql @sql,N'@in1 int output',@in1 output
    GO
      

  5.   

    create proc aaan
    @tb varchar(max)
    @name1 varchar (max)
    @in1 int output
    as
    begin
      exec('select '+@in1+'=[id] FROM '+tb+' WHRER [name1]='''+@name1+'''')
    end 
    go