2017-03-15 33 views
3

現在SQL Serverでこの問題が発生しており、問題の原因を特定できませんでした。SQLエラー:複数の部分の識別子...バインドできませんでした

私は、次のコードのためのストアドプロシージャを使用しています:できるだけ早く私は「マルチパート識別子」エラーごとに単一の列上のクエリ、SQL Serverのバネを実行するよう

DECLARE @cSql nVARCHAR(1000) 

SET @cSql = 'SELECT 
      [A].[REC_ID], 
      [A].[ADJUSTMENT_REC_ID], 
      [A].[ITEM_REC_ID], 
      [B].[CODE] [ITEM_CODE], 
      [B].[ALIAS_NAME] [ITEM_NAME], 
      [A].[WAREHOUSE_REC_ID], 
      [C].[CODE] [WAREHOUSE_CODE], 
      [C].[NAME] [WAREHOUSE_NAME], 
      [A].[qty_before_basic_uom], 
      [A].[qty_before_uom_1], 
      [A].[qty_adjust_basic_uom], 
      [A].[qty_adjust_uom_1], 
      [A].[qty_after_basic_uom], 
      [A].[qty_after_uom_1], 
      [A].[basic_uom], 
      [A].[uom_1], 
      [A].[ADJUST_VALUE], 
      [A].[cogs_adjust], 
      [A].[cogs_adjust_total], 
      [A].[asset_account_rec_id], 
      [A].[debit_account_rec_id], 
      [A].[credit_account_rec_id], 
      [A].[remark], 
      [A].[record_version], 
      [A].[void_status], 
      [A].[void_reason], 
      [A].[void_datetime], 
      [A].[void_user_rec_id], 
      [A].[create_datetime], 
      [A].[create_user_rec_id], 
      [A].[edit_datetime], 
      [A].[edit_user_rec_id], 
      [A].[delete_datetime], 
      [A].[delete_user_rec_id] 
      INTO [' + @cTemp + '] 
      FROM [IM_trsInventoryAdjustment_Detail] [A] 
      JOIN [IM_mstInventoryItem] [B] ON 
       [B].[REC_ID] = [A].[item_rec_id] 
      JOIN [IM_mstWarehouse] [C] ON 
       [C].[REC_ID] = [A].[warehouse_rec_id] 
      WHERE 1=0;' 

EXEC sp_executeSQL @cSql 

とします。

私のミスがどこにあるのかを教えてもらえますか?

P.S.私は動的なクエリを使用しているので、私はデータを注入している一時テーブルを変更し続けるでしょう...

+1

EXECをPRINTに置き換えて、クエリが最終的にどのようになるのかを確認することをお勧めします。 – DhruvJoshi

+0

あなたは 'EXEC'と' sp_executeSQL'の両方が必要ではないと思ってはいけません... – Tobb

+0

それはまったく動作しますか?動的部分なし。 –

答えて

1

聖なる、唯一の問題は、私の変数がコマンド全体を格納するのに十分ではないということです。ここで

は私がPRINTでEXECを交換するときの結果です:

SELECT 
     [A].[REC_ID], 
     [A].[ADJUSTMENT_REC_ID], 
     [A].[ITEM_REC_ID], 
     [B].[CODE] [ITEM_CODE], 
     [B].[ALIAS_NAME] [ITEM_NAME], 
     [A].[WAREHOUSE_REC_ID], 
     [C].[CODE] [WAREHOUSE_CODE], 
     [C].[NAME] [WAREHOUSE_NAME], 
     [A].[qty_before_basic_uom], 
     [A].[qty_before_uom_1], 
     [A].[qty_adjust_basic_uom], 
     [A].[qty_adjust_uom_1], 
     [A].[qty_after_basic_uom], 
     [A].[qty_after_uom_1], 
     [A].[basic_uom], 
     [A].[uom_1], 
     [A].[ADJUST_VALUE], 
     [A].[cogs_adjust], 
     [A].[cogs_adjust_total], 
     [A].[asset_account_rec_id], 
     [A].[debit_account_rec_id], 
     [A].[credit_account_rec_id], 
     [A].[remark], 
     [A].[record_version], 
     [A].[void_status], 
     [A].[void_reason], 
     [A].[void_datet 

だから、これは私がやったことです。

DECLARE @cSQL NVARCHAR(4000) 

DECLARE @cSQL NVARCHAR(1000) 

をし、それが動作し、大きな時間:私が変更されました。エラーはなくなり、私は今も別のバグに対処し続けることができます。

コメントと入力いただきありがとうございます!

+0

NVARCHAR(max)を使用することもできますが、クエリが大きくなると同じ問題が再発することはありません;) – Tobb

+0

@Tobb Thanks man! –

+0

クエリが実行される各セッションで '@ cTemp'変数に一意の名前が付いていることを確認してください。 –

関連する問題