如题
比如,select @t1="TABLE1","TABLE1"是一个字符串,怎么样在视图或存储过程里使用这个参数进行查询?
象这样:SELECT * FROM @t1 是不行的,要怎么办?

解决方案 »

  1.   

    declare @s varchar(1000),@t1 varchar(100)
    set @s='SELECT * FROM '+ @t1 
    exec(@s)
      

  2.   

    明确并肯定的告诉你,没有楼主说的功能,只能构建SQL字符串,然后EXEC之,象楼上那样.
      

  3.   

    呵呵,我本来是用EXEC来执行字符串的,但觉得写语句太麻烦,特别是一条语句中有多个变量时.
    谢hellowork()让我死心.
      

  4.   

    sp_excutesql
    ==============================================================================
    execute   sp_executesql 
              N'select * from pubs.dbo.employee where job_lvl = @level',
              N'@level tinyint',
              @level = 35楼主是这个意思吗?
      

  5.   

    TO  zjdyzwx(十一月猪):
              N'select * from pubs.dbo.employee where job_lvl = @level',
              N'@level tinyint',
    语句前面带N是什么意思啊,我看到过好多,就是还没明白
      

  6.   

    所有通过参数传递的表名称或列名称都是字符串,而不是真正的表对象或列对象.所以在过程内使用它们的时候必须使用字符串连接符"+"生成SQL语句字符串,这个SQL字符串就叫动态SQL,然后使用EXEC执行这个字符串,象一楼展示的那样.
    如果参数不是数据库对象,只是条件值,则可以直接使用:
    create proc #x @id int
    as
    select * from mytable where id = @id
    go