0

そのため、カーソルが機能しない理由がまったくわかりません。select ステートメントは正常に動作するため、SQL サーバーがエラーをスローする理由がわかりません。For ループには暗黙的なオープンとクローズがあるため、それも問題にはなりません。何か案は?

DECLARE
   var_lname customer.c_last%TYPE;
   var_fname customer.c_first%TYPE;
   var_addr customer.c_address%TYPE;
   var_phone customer.c_dphone%TYPE;
   CURSOR expl_cursor IS SELECT c_last, c_first, c_address, c_dphone from customer;
   cust_record expl_cursor%ROWTYPE;

BEGIN

   DBMS_OUTPUT.PUT_LINE('ClearWater Traders Mailing List');
   FOR cust_record IN expl_cursor
   LOOP
      FETCH expl_cursor INTO cust_record;
      var_lname := cust_record.c_last;
      var_fname := cust_record.c_first;
      var_addr := cust_record.c_address;
      var_phone := cust_record.c_dphone;
      DBMS_OUTPUT.PUT_LINE(var_lname || ' ' || var_fname || ' ' ||
      var_addr || ' ' || var_phone);
   END LOOP;
END;

エラーは次のとおりです。

1 行目のエラー: ORA-01001: 無効な cur ORA-06512: 15 行目

4

1 に答える 1

2

ああ、私はこれを解決しました。for ループ内で FETCH を実行できません。カーソルは自動的にインクリメントされるため。

于 2013-07-11T20:03:34.223 に答える