Tsql 以下动态sql语句出错
我在以下动态SQL语句中遇到了一个无法看到的错误:Tsql 以下动态sql语句出错,tsql,sybase,Tsql,Sybase,我在以下动态SQL语句中遇到了一个无法看到的错误: SET @sql_statement = "INSERT INTO " + @archive_db_name + ".dbo._TEST_TB_ACTIVE_ORDERS SELECT " + @reporting_db_name + ".dbo._TEST_TB_ACTIVE_ORDERS.* FROM " + @reporting_db_name + ".dbo._TEST
SET @sql_statement =
"INSERT INTO " +
@archive_db_name + ".dbo._TEST_TB_ACTIVE_ORDERS
SELECT " +
@reporting_db_name + ".dbo._TEST_TB_ACTIVE_ORDERS.*
FROM " +
@reporting_db_name + ".dbo._TEST_TB_ACTIVE_ORDERS
WHERE " +
@reporting_db_name + ".dbo._TEST_TB_ACTIVE_ORDERS.ORDER_ID
IN
(
select #tmp_table_order_ids.order_id
from #tmp_table_order_ids
)"
EXEC(@sql_statement)
错误是:
Msg 102,第15级,状态1:
服务器“服务器名称”,第5行:
“IN”附近的语法不正确
但是在错误指定的位置我看不到任何语法错误。有人能指出我为什么会出现这个错误吗?尝试将双引号改为单引号
SET @sql_statement =
'INSERT INTO ' +
@archive_db_name + '.dbo._TEST_TB_ACTIVE_ORDERS
SELECT ' +
@reporting_db_name + '.dbo._TEST_TB_ACTIVE_ORDERS1.*
FROM ' +
@reporting_db_name + '.dbo._TEST_TB_ACTIVE_ORDERS1
WHERE ' +
@reporting_db_name + '.dbo._TEST_TB_ACTIVE_ORDERS1.ORDER_ID
IN
(
select #tmp_table_order_ids.order_id
from #tmp_table_order_ids
)'
EXEC(@sql_statement)
没有错误:
declare @reporting_db_name varchar(50)
declare @archive_db_name varchar(50)
declare @sql_statement varchar(500)
select @reporting_db_name ='PHILARIS_RD'
select @archive_db_name ='PHILARIS_RD'
SET @sql_statement =
"INSERT INTO " +
@archive_db_name + ".dbo.A
SELECT " +
@reporting_db_name + ".dbo.A.*
FROM " +
@reporting_db_name + ".dbo.A
WHERE " +
@reporting_db_name + ".dbo.A.ID
IN
(
select B.ID
from B
)"
EXEC(@sql_statement)
我不使用Sybase,但PRINT@sql\u语句看起来可以吗?您是否已将“报价单”标识符设置为OFF?