oracle sql developerを使用して、1つのプロシージャをコールするトリガーを1つ作成しました。ここでは、トリガーのコードは次のとおりです。ソケットから読み取るデータがもうありません(Oracle SQL Developer)
CREATE OR REPLACE TRIGGER noteTrigger
BEFORE
INSERT OR
UPDATE OF valoare OR
DELETE
ON note
BEGIN
CASE
WHEN INSERTING THEN
DBMS_OUTPUT.PUT_LINE('Inserting');
updateBursa();
WHEN UPDATING('valoare') THEN
DBMS_OUTPUT.PUT_LINE('Updating valoare');
updateBursa();
WHEN DELETING THEN
DBMS_OUTPUT.PUT_LINE('Deleting');
updateBursa();
END CASE;
END;
/
は今、手順はここに書かれている:
CREATE OR REPLACE PROCEDURE updateBursa IS
v_countBursieri NUMBER := 0;
BEGIN
UPDATE STUDENTI SET bursa = null;
FOR v_i IN (SELECT nr_matricol from studenti natural join note group by nr_matricol having avg(valoare) =
(select max(avg(valoare)) from studenti natural join note group by nr_matricol)) LOOP
v_countBursieri := v_countBursieri + 1;
END LOOP;
FOR v_i IN (SELECT nr_matricol from studenti natural join note group by nr_matricol having avg(valoare) =
(select max(avg(valoare)) from studenti natural join note group by nr_matricol)) LOOP
UPDATE STUDENTI SET bursa = 1000/v_countBursieri where nr_matricol = v_i.nr_matricol;
END LOOP;
END;
/
そして、私は、このことにより、ノートテーブルを変更しようとすると:
INSERT INTO note VALUES ('111', '25', 5, TO_DATE('20/06/2015', 'dd/mm/yyyy'));
私はエラーを取得します:
Error report -
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [kqlidchg0], [], [], [], [], [], [], [], [], [], [], []
ORA-00604: error occurred at recursive SQL level 1
ORA-00001: unique constraint (SYS.I_PLSCOPE_SIG_IDENTIFIER$) violated
00603. 00000 - "ORACLE server session terminated by fatal error"
*Cause: An Oracle server session was in an unrecoverable state.
*Action: Log in to Oracle again so a new server session will be created
automatically. Examine the session trace file for more
information.
Error report -
SQL Error: No more data to read from socket
は公表されたバグの数とMOS上の未公表のバグにいくつかの参照がありますので、あなたは、Oracleから指導を得るためにSRを調達する必要があるかもしれません。パッケージとトリガを再コンパイルする前にPL/Scopeを無効にしてみることもできますが、それが役立つかどうかはわかりません。そしてバグの中には、彼らが腐敗につながる可能性があることが示唆されています。警告ログとトレースファイルを確認し、影響を評価することは価値があります。 –
ora 600エラーが発生した場合は、必ずSRを入力してください。チャンスは良いです他の誰かが同様の問題を抱えていて、あなたのためにそれを修正するか、回避策を考え出すことができます。また、セッショントレースファイルをチェックインしましたか? –