PL/SQL-Cursor-FOR-Schleife mit FETCH
Ich versuche zu helfen, mein Freund mit seiner Oracle-Hausaufgaben und er hat Folgendes problem:
Verwenden Sie eine cursor-FOR-Schleife zum abrufen der blog-id, blog-url und blog-Beschreibung, wenn die blog-id ist weniger als 4 und legen Sie Sie in eine cursor-variable. Abrufen und verarbeiten von jeder Datensatz und einfügen einer Zeile in die Tabelle Protokoll für jeden blog-id zurückgegeben.
Wir finden es schwer zu verstehen, aber wir haben folgende Abfrage:
DECLARE
CURSOR blog_cursor IS SELECT * FROM blog;
BEGIN
FOR blog_item IN blog_cursor LOOP
IF( blog_item.blog_id > 4 ) THEN
-- Insert a row in the "table log"
INSERT INTO log( log_id, log_url, log_desc )
VALUES( blog_item.blog_id, blog_item.blog_url, blog_item.blog_desc );
END IF;
END LOOP;
END;
/
Tabelle:
blog
blog_id
blog_url
blog_desc
Die Abfrage macht den job, aber Sie nicht verwenden die FETCH-Schlüsselwort, so denken wir nicht, dass es technisch Recht. Die Frage scheint schlecht geschrieben, aber wie würdest du es beantworten mit Hilfe der FETCH-keyword? Ich bin neu in PL/SQL, aber ich habe Erfahrung mit SQL.
INSERT INTO log( log_id, log_url, log_desc ) SELECT blog_id, blog_url, blog_desc FROM blog WHERE blog_id > 4;
scheint viel einfacher, anstatt einen cursor - obwohl es auch nichtFETCH
.- Ich Stimme zu, der Lehrer, der diesen Kurs scheint ziemlich verdammt faul.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast es richtig, und Sie brauchen nicht zu Holen, in der Tat hast du das holst, aber du hast es implizit, die Verwendung einer
fetch
Stichwort Sie brauchen einrecord
geben und auch Sie benötigen, zum öffnen und schließen des Cursors und auch prüfen, ob es offen ist oder nicht und auch prüfen, ob es Zeilen(in der Schleife), folgende ist ein weiteres für die von den cursor verwendet fetch und ein record-Typ: