create procedure ss
@wherestr varchar(1000)
as
   delcare @sql
   select @sql=' select s,s1,s2 into #tmp from k where s='+@wherestrexec(@sql)
goexec ss '1'
为什么运行提示#tmp未找到....如果把引号去了    select s,s1,s2 into #tmp from k where s=就可以
    但是我的参数就办法用了这种问题怎么解决
   

解决方案 »

  1.   

    create procedure ss 
    @wherestr varchar(1000) 
    as 
      declare  @sql nvarchar(1000)
      select @sql=' select s,s1,s2 into #tmp from k where s='+@wherestr exec(@sql) 
    go 
      

  2.   

    create procedure ss 
    @wherestr varchar(1000) 
    as 
      declare  @sql nvarchar(1000)
      select @sql=' select s,s1,s2 into #tmp from k where s='''+@wherestr +''''exec(@sql) 
      

  3.   

    --into #tmp去掉...
    外部调用
      

  4.   

    create procedure ss
    @wherestr varchar(1000)
    as
      declare @sql varchar(1000)
    create table #tmp(s int, s1 int, s2 int) -->数据类型自己调整
      select @sql='insert into #tmp select s,s1,s2 from k where s='+@wherestrexec(@sql)
    goexec ss '1'
      

  5.   

    create procedure ss
    @wherestr varchar(1000)
    as
    declare @sql varchar(8000)
    select @sql=' select s,s1,s2 into ##tmp from k where s='''+@wherestr+''''
    exec(@sql)
    exec ss '1' 
    select * from ##tmp
      

  6.   


    create procedure ss 
    @wherestr varchar(1000) 
    as 
      declare  @sql nvarchar(1000)
      select @sql=' select s,s1,s2  from k where s='''+@wherestr +''''exec(@sql) 
    go
    --调用
    create table #tmp (s int,s1 int,s2 int)--定义类型
    insert #tmp exec ss '1'
    select * from #tmp
      

  7.   

    谢谢各位的支持,我比较倾向于wzy_love_sly 的方法,明天去公司时试一下.....
      

  8.   

    select @sql=' select s,s1,s2 into #tmp from k where s='''+@wherestr +'''@wherestr是varchar类型的
    遇到这种问题建议你先print看看语句被拼成什么样的如这串
    declare @wherestr varchar(50),@sql varchar(500)
    set @wherestr='111'
    select @sql=' select s,s1,s2 into #tmp from k where s='''+@wherestr +''''
    print @sql 
      

  9.   


    对了你没有为@sql 附加数据类型delcare @sql varchar(500)