Ich habe einen Trigger erstellt, der eine Prozedur aufruft, mit Oracle SQL Developer. Hier ist der Code für Trigger:Keine Daten mehr aus dem Socket (Oracle SQL Developer) zu lesen
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;
/
Nun wird das Verfahren hier geschrieben:
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;
/
Und wenn ich versuche Notentabelle zu ändern, indem diese:
INSERT INTO note VALUES ('111', '25', 5, TO_DATE('20/06/2015', 'dd/mm/yyyy'));
ich Fehler angezeigt :
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
Es gibt eine Reihe von veröffentlichten Fehlern und einige Verweise auf unveröffentlichte Bugs auf MoS, daher müssen Sie möglicherweise einen SR aufstellen, um Hilfe von Oracle zu erhalten. Sie könnten PL/Scope deaktivieren, bevor Sie das Paket neu kompilieren und auslösen, aber nicht sicher, ob das hilft. Und einige der Fehler deuten darauf hin, dass sie zu Korruption führen können. Es lohnt sich, die Warnprotokoll- und Trace-Dateien zu überprüfen und die Auswirkungen zu bewerten. –
Wenn Sie einen ora 600-Fehler erhalten, geben Sie immer einen SR ein. Die Chancen stehen gut, dass jemand anderes ein ähnliches Problem hatte und sie es entweder für Sie beheben oder einen Workaround schaffen können. Haben Sie auch die Sitzungsverfolgungsdatei eingecheckt? –