Christian Seiler: PL/SQL Cursor

Beitrag lesen

Hallo,

Ich hole mit mit einem Cursor mehrere Datensätze aus einer Tabelle:
DECLARE

CURSOR cur IS
  SELECT *
  FROM test;
var test%ROWTYPE;

Es kann aber sein, dass in der Tabelle noch kein Datensatz vorhanden ist, deßhalb will ich den Cursor auf NULL abfragen:

BEGIN
IF cur IS NULL THEN...

Das geht aber nicht. Also habe ich mir gedacht, ich versuche den ersten Eintrag (den es aber nicht gibt!) aus dem Cursor zu lesen und dann die Variable 'test' auf NULL abzufragen. Das geht aber auch nicht.

Zuerst einmal müsstest Du 'var' auf NULL abfragen, nicht 'test' (da var test%ROWTYPE die Variable 'var' definiert vom Typ "Zeile aus Tabelle 'test'"). Zum anderen gibt's dafür explizit eine Syntax:

OPEN cur;  
  
FETCH c1 INTO var;  
  
IF c1%NOTFOUND THEN  
  -- tu was --  
END IF  
  
CLOSE cur;

Schau Dir dazu am besten die Doku an: http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/06_ora.htm#36656

Viele Grüße,
Christian