私は、テーブルに行を挿入し、後で同じ外部キーを持つ他のすべてを更新する必要がある簡単な手順を書いています。私の問題は、他のTHENステートメントです。 SQL Developerは、私は、このエラーを与えている次のようにPL/SQLその他の場合エラー
Error(26,3): PLS-00103: Encountered the symbol "WHEN" when expecting one of the following: (begin case declare end exception exit for goto if loop mod null pragma raise return select update while with << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge The symbol "exception" was substituted for "WHEN" to continue.
私の手順は次のとおりです。
CREATE OR REPLACE PROCEDURE INS_RETUR
(
P_BRDOKUMENTA IN RETUR.BrDokumenta%TYPE,
P_DATKREIRANJA IN RETUR.DatKreiranja%TYPE,
P_DATSTAMPANJA IN RETUR.DatStampanja%TYPE,
P_SIFRJ IN RETUR.SifRJ%TYPE,
P_BRRADKNJIZ IN RETUR.BrRadKnjiz%TYPE,
P_PRIJEMNIBR IN RETUR.PrijemniBr%TYPE,
P_BRPORUDZBENICE IN RETUR.BrPorudzbenice%TYPE,
P_REZULTAT OUT NUMBER
)
AS
BEGIN
P_REZULTAT := 0;
P_PORUKA := 'Ok';
INSERT INTO Retur
VALUES (P_BRDOKUMENTA, P_DATKREIRANJA, P_DATSTAMPANJA, P_SIFRJ, P_BRRADKNJIZ, P_PRIJEMNIBR, P_BRPORUDZBENICE, 'A');
UPDATE Retur
SET Status = 'N'
WHERE BrPorudzbenice = P_BRPORUDZBENICE
AND BrDokumenta != P_BRDOKUMENTA;
WHEN OTHERS THEN
P_REZULTAT := 1;
P_PORUKA := (-10001,'Doslo je do greske - '||SQLCODE||' -GRESKA- '||SQLERRM);
END INS_RETUR;
ですが、なぜでしょうか?
また、このエラーをロールバックするためにRAISEする必要がありますか?これは、コードがWHEN OTHERS THENステートメントに達すると自動的に行われますか?前もって感謝します。
あなたは絶対に正しいです!そして私は...学習しています:)ありがとう! – dzenesiz
あなたは大歓迎です! – Aleksej