日期:2014-05-17  浏览次数:20547 次

如何动态设置当前数据库(SQL2000)
正常情况下可以用: USE xxxx 来设置当前数据库

但当数据库名是一个变量的话,该怎么做?

USE [master]

DECLARE @dbname SYSNAME
SELECT @dbname = N'testdb'

IF DB_ID(@dbname) IS NOT NULL        --这里执行成功
    EXEC('DROP DATABASE ' + @dbname) --这里执行成功

EXEC('CREATE DATABASE ' + @dbname)   --这里执行成功

EXEC('USE ' + @dbname) --这里执行没反应

--下面这个表,建在master表上面了
CREATE TABLE testtable([ID] INT IDENTITY(1, 1) PRIMARY KEY, test VARCHAR(10))


那究竟要怎么动态设置当前数据库的?

------解决方案--------------------
拼查询语句,查询的时候指定:数据库名.架构名.表名
------解决方案--------------------
引用:
我要插入70多个表,每个表有约束、索引、关系等信息,
难道这些都要用 EXEC 来执行吗?那代码写出来又麻烦又累赘
就没有别的方法可以直接动态设置当前数据库的吗?

还有设置用户的时候应该用什么方法?


动态设置USE DATABASE 这个是不行的。