1

次の動的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, Level 15, State 1: Server 'server_name', Line 5: Incorrect syntax near 'IN'

しかし、エラーが指定した場所に構文エラーが表示されません。誰かが私がこのエラーを受け取る理由を親切に指摘してもらえますか?

4

2 に答える 2

0

二重引用符を一重引用符に変更してみてください

  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) 
于 2012-09-05T21:34:28.147 に答える
0

エラーはありません:

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)
于 2012-09-26T12:03:07.377 に答える