在Sql过程中使用不同的数据库

时间:2017-11-11 14:28:17

标签: sql sql-server

我正在尝试使用存储过程创建动态列,从一个数据库到另一个数据库。 因为我有查询和条件的续集我正在使用它。 但面临问题:

  

Msg 102,Level 15,State 1,Line 1语法不正确'('。

以下是我遇到错误的行:

  

执行(' USE' + @ DB1 +&#39 ;; CREATE TABLE DB2.dbo。' + @TableName +' AS   (SELECT * FROM@DB1.dbo。' + @ TableName +')' );

提前感谢!!

2 个答案:

答案 0 :(得分:1)

在您的代码中,您在文本内部(在单引号内)使用@ DB1(第二次出现),但需要在外部,因此它将被解析为变量。

此外,你需要使用"选择*进入",因为" crate table as"仅适用于Azure SQL DataWarehouse,并且在MS SQL中的语法不正确。

所以正确的代码看起来像那样:

Execute( 'USE ' + @DB1+ '; SELECT * INTO DB2.dbo.'+ @TableName + ' FROM ' + @DB1 + '.dbo.' + @TableName +')' );

答案 1 :(得分:0)

Execute( 'USE ' + @DB1+ '; SELECT * INTO DB2.dbo.'+ @TableName + ' FROM ' + @DB1 + '.dbo.' + @TableName +')' );