- 締切済み
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にはきだす処理です。 これだけでは分からないかもしれませんが、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- PED02744
- ベストアンサー率40% (157/390)
わからないです。ちゃんと動作しますよ? そもそも「ステップ実行」というのがわからないのです。 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; / とでもして確かめてみられてはいかがです?
補足
すみません、ちゃんと動作していました。。 ツールはSQLDeveloperを使用しています。 お手数とらせて申し訳ございません。