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 nicht FETCH.
  • Ich Stimme zu, der Lehrer, der diesen Kurs scheint ziemlich verdammt faul.
InformationsquelleAutor Joe Boris | 2015-04-21
Schreibe einen Kommentar