rowcount in Oracle
Möchte ich die Funktion SQL%ROWCOUNT als einen Weg, mir zu sagen, wenn ein Datensatz in einer Tabelle ist oder nicht.
Der code, den ich habe, ist folgende:
DECLARE
v_emp employee%ROWTYPE;
CURSOR c_emp IS
SELECT * FROM employee WHERE name='chuck';
BEGIN
OPEN c_emp;
FETCH c_emp INTO v_emp;
IF SQL%ROWCOUNT=1 THEN
DBMS_OUTPUT.PUT_LINE('found');
ELSE
DBMS_OUTPUT.PUT_LINE(TO_CHAR('not found'));
END IF;
END;
Aber es wird nicht gedruckt, überhaupt nichts, obwohl Sie diesen Datensatz mit diesem Namen in der Datenbank existiert
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise würden Sie so etwas tun
Wenn Sie wirklich wollen, eine explizite cursor, würden Sie brauchen, um zu überprüfen, die
<<cursor_name>>%rowcount
, nichtsql%rowcount
zu bestimmen, wie viele Zeilen weggebracht worden war. Wenn du gehst, um eine explizite cursor, müssen Sie auch dafür sorgen, schließen Sie den cursor. Da Sie nicht posten Sie Ihre Tabellendefinition oder die Daten, die Sie verwenden, ich verwende dasEMP
Tabelle in derSCOTT
schema als BeispielUnd beachten Sie, dass egal, was Ansatz, den Sie verwenden, wenn Sie möchten, dass die Ausgabe von
DBMS_OUTPUT
angezeigt werden, die Sie benötigen, um eine Ausgabe in was auch immer Werkzeug, das Sie verwenden. Wenn Sie mit SQL*Plus, würde das bedeuten, dass laufenvor der Ausführung der anonymen PL/SQL block.
Lösung ohne
SQL%ROWCOUNT
und lokalen Variablen: