1

次のようなストアド プロシージャで一時テーブルを作成しています。

 IF OBJECT_ID('#INSTL_PLAN_TEMP') IS NULL 
 BEGIN
     CREATE TABLE #INSTL_PLAN_TEMP(P_LOAN_ID INT,
                                   P_RECOVERY_TYPE VARCHAR(1),
                                   P_SEQ_NO INT,
                                   P_FROM_INSTL_NO INT)

     DROP TABLE #INSTL_PLAN_TEMP 
 END

その後、このテーブルに次のようなカーソルを作成します

 DECLARE INSTL_PLAN_CUR CURSOR FOR
     SELECT P_RECOVERY_TYPE, P_LOAN_ID, P_SEQ_NO, P_FROM_INSTL_NO
     FROM INSTL_PLAN_TEMP
     WHERE P_LOAN_ID = @I_LOAN_ID
     ORDER BY P_LOAN_ID, P_SEQ_NO;

しかし、カーソルステートメントではエラーが表示されます

オブジェクト名 INSTL_PLAN_TEMP が無効です

plz help 私は SQL が初めてです

4

2 に答える 2

1

これはうまくいかないと思います:

IF OBJECT_ID('#INSTL_PLAN_TEMP') IS NULL

私が間違っていなければ、次のようになります。

IF OBJECT_ID('tempdb..#INSTL_PLAN_TEMP') IS NULL

なぜ作成後にドロップするのですか?

DROP TABLE #INSTL_PLAN_TEMP

これは正しい宣言です:

DECLARE @INSTL_PLAN_CUR CURSOR FOR
   SELECT P_RECOVERY_TYPE, P_LOAN_ID, P_SEQ_NO, P_FROM_INSTL_NO
   FROM #INSTL_PLAN_TEMP
   WHERE P_LOAN_ID = @I_LOAN_ID
      ORDER BY P_LOAN_ID, 
              P_SEQ_NO;
于 2012-11-30T05:49:07.650 に答える
1

私が見ることができる3つのポイント:

  • テーブルを作成していて、#INSTL_PLAN_TEMP次のステートメントを削除しています。
  • #INSTL_PLAN_TEMPそして、カーソルでは使用すべきではなく 使用すべきだと思います INSTL_PLAN_TEMP
  • カーソルは次のように定義する必要があります@INSTL_PLAN_CUR CURSOR

注: Mohit さん、ご指摘ありがとうございます。

-マイルド

于 2012-11-30T05:47:52.017 に答える