2017-12-06 4 views
1

以下の手順でエラーが発生します。'PLS-00103: Encountered the symbol "." when expecting one of the following:;'です。このエラーは、commit文の後の行で発生しています。oracleプロシージャで次のいずれかが予想されるときにシンボルに遭遇します

私は非常に手続きを書いているので、どこに問題が起こっているのか分かりません。また、カーソルからデータを出力しているときにselectクエリを使用して挿入に問題があり、selectクエリも使用している可能性があります。

CREATE OR REPLACE PROCEDURE TEST 
IS 
TST VARCHAR2(4000):= NULL; 
IN_SEQ_NO NUMBER; 

CURSOR C_DB IS 
SELECT NAME, ID 
    from REC_PROC; 

BEGIN 

select IDH_SEQ.nextval INTO IN_SEQ_NO from dual; 

COMMIT; 

END LOOP; 

END TEST; 
+0

間のAAのスペースがあってはならない。と= 'IN_NESS_DB_LINK中:= NESSOFT_DB.DATABASE_LINK' 。実際には、それを修正する必要がある複数の場所があります。 –

+0

私は不要なスペースを削除していませんが、エラー(83,17)としてコミットステートメントの後にエラーメッセージが表示されます。PLS-00103:シンボル "。"が見つかりました。次のいずれかを予期しているとき。 – Andrew

+2

コンパイル時エラーが発生していると思います。もしそうなら、私はほとんど何も観察しません。変数NESS_QUERYは宣言されていません。 2.カーソルでは、D.SYS_DB_NAME、D.ENTITY_ID、T.DAY_ID、DB.DATABASE_LINKの複数のエイリアスが使用されます。しかし、カーソルはエイリアスなしでも1つのテーブルからのみ選択しています –

答えて

1

あなたの手順にFOR rec IN C_DB LOOP命令追加:

CREATE OR REPLACE PROCEDURE TEST 
IS 
    TST  VARCHAR2(4000):= NULL; 
    IN_SEQ_NO NUMBER; 

    CURSOR C_DB IS 
    SELECT NAME, 
      ID 
     FROM REC_PROC; 

BEGIN 
    FOR rec IN C_DB 
    LOOP 
     SELECT IDH_SEQ.nextval INTO IN_SEQ_NO from dual; 
     COMMIT; 
    END LOOP; 
END TEST; 

またはEND LOOP;を削除する:

CREATE OR REPLACE PROCEDURE TEST 
IS 
    TST  VARCHAR2(4000):= NULL; 
    IN_SEQ_NO NUMBER; 

    CURSOR C_DB IS 
    SELECT NAME, 
      ID 
     FROM REC_PROC; 

BEGIN 
    SELECT IDH_SEQ.nextval INTO IN_SEQ_NO from dual; 
    COMMIT; 
END TEST; 
関連する問題