Tsql 以下动态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

我在以下动态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_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?