• 締切済み

PLSQLで

PLSQL(Oracle9.i)で以下のことをしようとしています。 しかし、コンパイルは通るがステップ実行すると固まります。 -- 宣言部 TYPE REC_A IS RECORD( a NUMBER, b NUMBER, c NUMBER, d NUMBER, e NUMBER, f NUMBER, g NUMBER, ); TYPE B_TBL IS TABLE OF REC_A INDEX BY BINARY_INTEGER; TYPE C_TBL IS TABLE OF B_TBL INDEX BY BINARY_INTEGER; D_TBL C_TBL; -- 関数部 FOR i IN 1..3 LOOP  FOR J IN 1..3 LOOP   D_TBL(I)(J).a := 1;   D_TBL(I)(J).b := 2;   D_TBL(I)(J).c := 3;   D_TBL(I)(J).d := 4;   D_TBL(I)(J).e := 5;   D_TBL(I)(J).f := 6;   D_TBL(I)(J).g := 7;  END LOOP; END LOOP; なにぶんまだPLSQLの勉強始めて1ヶ月満たないもので、分からないことをどう伝えればいいのかも分からない状況です。 処理的には、D_TBL(I)(J)に値をいろいろセットし集計をとりCSVにはきだす処理です。 これだけでは分からないかもしれませんが、よろしくお願いします。

みんなの回答

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

わからないです。ちゃんと動作しますよ? そもそも「ステップ実行」というのがわからないのです。 Oracle9i自身にはステップ実行ツールはないはずです。 SQLDeveloperかSI Objectか何かです? とにかく、PL/SQLの構文としては問題ないですし、正しく実行もされます。 ステップ動作をさせるのではなく、SQLPLUSから SET SERVEROUTPUT ON SIZE 1000000 とでもして、直接 declare TYPE REC_A IS RECORD( a NUMBER, b NUMBER, c NUMBER, d NUMBER, e NUMBER, f NUMBER, g NUMBER, ); TYPE B_TBL IS TABLE OF REC_A INDEX BY BINARY_INTEGER; TYPE C_TBL IS TABLE OF B_TBL INDEX BY BINARY_INTEGER; D_TBL C_TBL; begin FOR i IN 1..3 LOOP  FOR J IN 1..3 LOOP   D_TBL(I)(J).a := 1;   D_TBL(I)(J).b := 2;   D_TBL(I)(J).c := 3;   D_TBL(I)(J).d := 4;   D_TBL(I)(J).e := 5;   D_TBL(I)(J).f := 6;   D_TBL(I)(J).g := 7;  END LOOP; END LOOP; FOR i IN 1..3 LOOP  FOR J IN 1..3 LOOP   dbms_output.put_line(i||','||j||'.a:'||D_TBL(I)(J).a );   dbms_output.put_line(i||','||j||'.b:'||D_TBL(I)(J).b );   dbms_output.put_line(i||','||j||'.c:'||D_TBL(I)(J).c );   dbms_output.put_line(i||','||j||'.d:'||D_TBL(I)(J).d );   dbms_output.put_line(i||','||j||'.e:'||D_TBL(I)(J).e );   dbms_output.put_line(i||','||j||'.f:'||D_TBL(I)(J).f );   dbms_output.put_line(i||','||j||'.g:'||D_TBL(I)(J).g );  END LOOP; END LOOP; end; / とでもして確かめてみられてはいかがです?

noname#76866
質問者

補足

すみません、ちゃんと動作していました。。 ツールはSQLDeveloperを使用しています。 お手数とらせて申し訳ございません。

関連するQ&A