set @pp3 = ' where b='haha''--这里的'怎么转意?'haha'
set @pp1= 'select '+@pp2+'=a from ' + @input + @pp3
exec (@pp1)

解决方案 »

  1.   

    eg:
    declare @num int, @sqls nvarchar(4000)
    set @sqls='select @a=count(*) from '+@tablename
    exec sp_executesql @sqls,N'@a int output',@num output
    select @num
      

  2.   

    ALTER   PROCEDURE teststr  @input varchar(50)
    AS
    declare @pp1 varchar(50),
            @pp2 varchar(50),
            @pp3 varchar(50)
    set @pp3 = ' where b=''haha'''--这里的'怎么转意?'haha'
    set @pp1= 'select @pp2=a from ' + @input + @pp3
    exec sp_executesql  @pp1 ,N'@pp2 varchar(50) output',@pp2 output
      

  3.   

    不太明白你的意思 
    ^_^
    ALTER   PROCEDURE teststr  @tableName varchar(50),@inputColumnsName varchar(225)
    AS
    declare @pp1 varchar(50),
    set @pp1= 'select'  + @inputColumnsName + ' from '+ @TableName
    exec (@pp1)
      

  4.   

    ALTER   PROCEDURE teststr  @input varchar(50)
    AS
    declare @pp1 nvarchar(500),  --将定义改为nvarchar
            @pp2 varchar(50),
            @pp3 varchar(50)
    set @pp3 = ' where b=''haha'''--这里的'怎么转意?'haha'
    set @pp1= 'select @pp2=a from ' + @input + @pp3
    exec sp_executesql  @pp1 ,N'@pp2 varchar(50) output',@pp2 output
      

  5.   

    添加SET QUOTED_IDENTIFIER OFF令"雙引號可用改為SET QUOTED_IDENTIFIER OFF--set @pp3 = ' where b='haha''--这里的'怎么转意?'haha'
    --上面這句改為 
    set @pp3=" where b='haha'"   --用雙引號引用
    set @pp1= 'select @pp2=a from ' + @input + @pp3
    exec (@pp1)SET QUOTED_IDENTIFIER ON
      

  6.   

    ALTER   PROCEDURE teststr  @input nvarchar(50)
    AS
    declare @pp1 nvarchar(500),  
            @pp2 varchar(50),
            @pp3 nvarchar(50)
    set @pp3 = ' where b=''haha'''
    set @pp1= 'select @pp2=a from ' + @input + @pp3
    execute sp_executesql  @pp1 ,N'@pp2 varchar(50) output',@pp2 output好像来晚啦,请楼主注意数据类型nvarchar
      

  7.   

    谢谢大家,如果我要选两列出来怎么写?
    ALTER   PROCEDURE teststr  @input nvarchar(50)
    AS
    declare @pp1 nvarchar(500),  --我注意到了,谢谢
            @pp2 varchar(500),
            @pp3 nvarchar(500), --这个不用该吧
            @pp4 varchar(500)    --我新加的
    set @pp3 = ' where b=''haha''' --谢谢
    set @pp1= 'select @pp2=a ,@pp4=c from ' + @input + @pp3 --我想多选一列
    execute sp_executesql  @pp1 ,N'@pp2 varchar(50) output',@pp2 output--????这句怎么写?
    --execute sp_executesql  @pp1 ,N'@pp2 varchar(50) output', N'@pp2 varchar(50) output', @pp2 output, @pp4 output 这么写不行,不明白N的意思,请教大家,完事给分
      

  8.   

    可以了,谢谢大家,给分。
    execute sp_executesql  @pp1 ,N'@pp2 varchar(500) output', N'@pp4 varchar(500) output', @pp2 output, @pp4 output 
    我写错了。
      

  9.   

    ALTER   PROCEDURE teststr  @input varchar(50)
    AS
    declare @pp1 varchar(50),
            @pp2 varchar(50),
            @pp3 varchar(50)set @pp3 = ' where b=''haha'''
    set @pp1= 'select @pp2=a from '+@input+ @pp3exec sp_executesql  @pp1 ,N'@pp2 varchar(50) output',@pp2 outputselect @pp2 结果