exec('select * from '@table_name)

解决方案 »

  1.   

    exec('select * from '+@table_name)
      

  2.   

    select db_name()可以返回当前数据库名
      

  3.   

    谢谢你,冷兄,
    EXEC('SELECT TOP 1 [ID] FROM dbo.' + @TableName)
    是可以执行的,
    但是如果我想把它赋值给另一个变量@ID
    可是无论
    @ID = EXEC('SELECT TOP 1 [ID] FROM dbo.' + @TableName)
    还是
    EXEC('SELECT TOP 1 @ID = [ID] FROM dbo.' + @TableName)
    都不可以,前者提示不可以执行,
    后者提示需要提前定义@ID,在此脚本中我已经定义过了。
    如何能把查询结果赋值给一个变量呢?
      

  4.   

    楼主真是大款啊,给这么多分啊,抢啊~~
    declare @sql nvarchar(8000),@ID int
    set @sql = 'SELECT @ID=TOP 1 [ID] FROM dbo.' + @TableName
    exec sp_executesql @sql,N'@ID int output',@ID outputselect @ID --得到变量
      

  5.   

    为什么要用OPENQUERY和OPENSOURCE来实现呢??不明白啊?
    看下面的:一、OPENDATASOURCE
    不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分。
    语法
    OPENDATASOURCE ( provider_name, init_string )
    问题:是否只能使用OLEDB访问其他数据源。二、OPENROWSET
    包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。三、 OPENQUERY (链接服务器)
    在给定的链接服务器(一个 OLE DB 数据源)上执行指定的直接传递查询。可以在查询的 FROM 子句中像引用表名那样引用 OPENQUERY 函数。依据 OLE DB 提供程序的能力,还可以将 OPENQUERY 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。
      

  6.   

    动态 sql
    see ——>
    http://blog.csdn.net/txlicenhe/archive/2003/12/15/21030.aspx
      

  7.   

    3: 输出参数
    eg:
    declare @num,
            @sqls
    set @sqls='select count(*) from  ' + @servername + '.a.dbo.b'
    exec(@sqls)
    我如何能将exec执行的结果存入变量@num中declare @num int,
            @sqls nvarchar(4000)
    set @sqls='select @a=count(*) from '+@servername+'.a.dbo.b'
    exec sp_executesql @sqls,N'@a int output',@num output
    select @num