我正在尝试执行连接链接服务器的EXEC,但它不能使用表变量。
有没有解决方法?
我的代码:
DECLARE @Table TABLE(
ID VARCHAR(8),
DATA DATE,
DIA VARCHAR(2),
MES VARCHAR(2),
ANO VARCHAR(4)
)
INSERT INTO @Table SELECT * FROM LOCALTABLE
EXEC ('INSERT INTO SERVER2TABLE SELECT * FROM ' + @Table) AT SERVER2;
错误:
Must declare the scalar variable "@Table".
我的服务器:
SQL SERVER 2008 R2 LINKED SERVER使用MySQL ODBC 5.1驱动程序MySQL 5.6.8
答案 0 :(得分:0)
尝试一次:我不确定你是如何将数据填充到表变量中的,但根据你的操作,这将有效
EXEC ('
DECLARE @Table TABLE(
ID VARCHAR(8),
DATA DATE,
DIA VARCHAR(2),
MES VARCHAR(2),
ANO VARCHAR(4)
)
INSERT INTO SERVER2TABLE SELECT * FROM @Table') AT SERVER2;
答案 1 :(得分:0)
您不能在动态SQL中使用类似的表变量,即使它不是链接服务器。 @Table
是一个表,而不是字符串,因此您不能将其附加到字符串。即使您将其用作名称,它仍然无效,因为该变量不再位于EXEC
范围内。
您是否尝试过直接插入链接服务器?我相信语法是这样的:
INSERT INTO SERVER2...SERVER2TABLE (id, data, dia, mes, ano)
SELECT id, data, dia, mes, ano
FROM @Table
假设您的目标表(SERVER2TABLE
)中的列名相同。