Kann %NOTFOUND null zurückgegeben, nachdem eine Holen?

Diese Frage ausgelöst wird, ein sehr interessanter Punkt; es scheint ein Widerspruch in der Oracle-Dokumentation, ob es möglich ist, für %NOTFOUND zu null nach zu Holen. Ist es?

Zitat aus der 11g Dokumentation

Hinweis: In Beispiel 6-16, wenn FETCH nie holt eine Zeile, dann c1%NOTFOUND
ist immer NULL, und die Schleife wird nie verlassen. Um zu verhindern, dass unendlich
looping, diesen EXIT verwenden stattdessen die Anweisung: EXIT WHEN c1%NOTFOUND ODER
(c1%NOTFOUND NULL);

In der Dokumentation scheint direkt widersprechen sich selbst, wie es auch die folgenden sagt, das impliziert, dass nach einer fetch - %NOTFOUND nicht null sein.

%NOTFOUND (das logische Gegenteil von %FOUND) zurück:

NULL, nachdem die explizite cursor ist geöffnet, aber vor dem ersten fetch

FALSE, wenn die Letzte fetch-von der expliziten cursor eine Zeile zurückgegeben

STIMMT, sonst

Den 10g-Dokumentation hat eine ähnliche Warnung, die nicht unbedingt einen direkten Widerspruch, wie er warnt, dass ein fetch möglicherweise nicht erfolgreich ausgeführt werden kann, um für dieses Verhalten ausgestellt werden.

Vor dem ersten fetch -, %NOTFOUND mit NULL ausgewertet. Wenn FETCH nie
erfolgreich ausgeführt wird, die beendet wird, WENN die Bedingung ist nie WAHR, und die
Schleife wird nie verlassen. Um sicher zu sein, möchten Sie vielleicht die Verwendung der folgenden
EXIT-Anweisung statt:

EXIT WHEN c1%NOTFOUND ODER c1%NOTFOUND NULL IST;

In welchen Situationen ist es vielleicht eine fetch-entweder "fail" oder vielleicht %NOTFOUND null zurück, nach einer fetch-Anweisung ausgeführt wurde?

InformationsquelleAutor Ben | 2012-06-30
Schreibe einen Kommentar