【问题标题】:Is there a way to select a database from a variable?有没有办法从变量中选择数据库?
【发布时间】:2010-10-30 13:14:50
【问题描述】:

有没有办法从变量中选择数据库?

Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob

【问题讨论】:

    标签: sql sql-server dynamic-sql


    【解决方案1】:

    #TempTables 将持续存在于 GO 中

    您可以在第一批中创建表,在该批或任何后续批中根据需要插入/选择数据。

    这里是一些示例语法:

    CREATE TABLE #YourTableName
    (
         col1   int         not null   primary key   identity(1,1)
        ,col2   varchar(10)
    )
    

    【讨论】:

      【解决方案2】:

      很遗憾,没有。

      除非您可以将批处理的其余部分作为动态 SQL 执行。

      使用execute 动态执行SQL 将更改execute 语句范围的上下文,但不会对您执行execute 语句的范围产生持久影响。

      换句话说,这个:

      DECLARE @db VARCHAR(100)
      SET @db = 'SweetDB'
      EXECUTE('use ' + @db)
      

      不会永久设置当前数据库,但如果您像这样更改上述代码:

      DECLARE @db VARCHAR(100)
      SET @db = 'SweetDB'
      EXECUTE('use ' + @db + ';select * from sysobjects')
      select * from sysobjects
      

      那么这两个查询的结果将会不同(假设您还没有在 SweetDB 中),因为在 execute 中执行的第一个选择正在 SweetDB 中执行,但第二个不是。

      【讨论】:

        【解决方案3】:
        declare @NewDB varchar(50)
        set @NewDB = 'NewDB'
        execute('use ' + @NewDB)
        

        【讨论】:

        猜你喜欢
        • 2021-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        • 2020-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多