我正在尝试使用存储过程创建动态列,从一个数据库到另一个数据库。 因为我有查询和条件的续集我正在使用它。 但面临问题:
Msg 102,Level 15,State 1,Line 1语法不正确'('。
以下是我遇到错误的行:
执行(' USE' + @ DB1 +&#39 ;; CREATE TABLE DB2.dbo。' + @TableName +' AS (SELECT * FROM@DB1.dbo。' + @ TableName +')' );
提前感谢!!
答案 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 +')' );