例如:
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.   

    报了这个错误。我使用的是sql 2005 express版本。
    Conversion failed when converting the varchar value 'select ' to data type int.
      

  6.   


    编译能通过,但使用时报错了
    exec aaa 'tb','Filed',@in1 outputIncorrect syntax near 'Name1'.
      

  7.   

    弄错楼数了编译能通过,但使用时报错了
    exec aaa 'tb','Filed',@in1 outputIncorrect syntax near 'Name1'.
      

  8.   


    我见他的方法好记,我就先试试,你用的方法我也试过了,会出这个
    编译能通过,但使用时报错了
    这个exec aaa 'tb','Filed',@in1 outputIncorrect syntax near 'Name1'.
      

  9.   


    @tb nvarchar(max),
    @name1 nvarchar (max),
    @in1 int output
    as
      declare @sql nvarchar(2000)
      set @sql='select @in1=[id] FROM '+@tb+' WHRER [Name]='''+@name1+''''
      exec sp_executesql @sql,N'@in1 int output',@in1 output仍然报Incorrect syntax near 'Name1'.这个错误。
    数据表@name1原来是 varchar(max)的,我改为 nvarchar还是出这个错误。
      

  10.   


    WHRER [name1]='''+@name1+''''这里有问题。name1 用varchar 或者nvarchar都不行。数据表里的也对应着改的
    提示语法错误
      

  11.   

    where 
    whrer 
    都是copy惹得祸啊。55555