2012-04-04 179 views
1

我有@db_out = 'aux.dbo.some_table_name'数据库,我不知道怎么滴,基于变量如创建:SQL CREATE从可变

IF OBJECT_ID(@db_out) IS NOT NULL DROP TABLE "@db_out" - not working 
CREATE TABLE "@db_out" .... etc 

它创建master.dbo @ dbo_out

哪有我使用该变量来创建该表或验证它并将其删除?

回答

3

你将不得不建立VARCHAR变量的声明,并执行它:

declare @strSql as varchar(max) 

IF OBJECT_ID(@db_out) IS NOT NULL 
BEGIN 
    EXEC ('DROP TABLE [' + @db_out + ']') 
END 
set @strSql = 'CREATE TABLE [' + @db_out + '] (' -- Etc 
EXEC (@strSql) 
+0

最好..非常感谢。 – pufos 2012-04-04 09:02:36

1

你需要编写动态SQL。

SET @sql = 'IF OBJECT_ID(@db_out) IS NOT NULL DROP TABLE ' + @db_out + '; ' 
SET @sql = @sql + 'CREATE TABLE ' + @db_out + ' (...)' 
EXEC(@sql) 
+0

谢谢你......它的工作原理 – pufos 2012-04-04 09:04:26