WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

 
 
Themen-Optionen Ansicht
Alt 05.06.2006, 22:22   #3
watchdog
Newbie
 
Registriert seit: 14.10.2002
Beiträge: 3


Standard

Punkt 1: In nem PL/SQL-Block musst jedenfalls in ne Variable oder in nen Record selektieren, sonst wird das nix. Das Ergebnis muss ja irgendwo rein ;-). Nachdem ja evt. mehr als 1 Record zurückkommen kann, solltest du einen cursor bzw. ne cursor-for-loop verwenden.

Zu Deinem Prob:
Also ich würde sagen, Du machst es entweder mit flags so wie du's vorgeschlagen hast oder du machst Unterblöcke

Code:
DECLARE
  v_succ   varchar2(5) := 'START';
  v_result varchar2(1);

  cursor c1 is
    select '1' from dual;
BEGIN
  ----------------------
  -- Sub-Programmblock 1
  ----------------------
  BEGIN
    select '*' into v_result from bla1 where x='y';    
  EXCEPTION
    when NO_DATA_FOUND then
      dbms_output.put_line('in bla1 nix gefunden');
  END;

  --> Weiter in der Verarbeitung

  ----------------------
  -- Sub-Programmblock 2
  ----------------------
  BEGIN
    select '*' into v_result from bla2 where x='z';
  EXCEPTION
    when NO_DATA_FOUND then
      dbms_output.put_line('in bla2 nix gefunden');  
  END;

  --> Weiter bei der restlichen Verarbeitung

  ------------------------------------
  -- NO_DATA_FOUND => äußere Exception
  ------------------------------------
  v_succ := 'bla3';
  select * into v_result from bla3 where x='z';

  ------------------
  -- cursor-Beispiel
  ------------------
  open c1;
    fetch c1 into v_result;
    if c1%FOUND then
      dbms_output.put_line('Gefunden: '||v_result);
    else
      -- c1%NOTFOUND
      dbms_output.put_line('Nix gefunden');
      -- Wenn gewünscht hier definierten Fehler raisen
    end if;
  close c1;

EXCEPTION
  when NO_DATA_FOUND then
    dbms_output.put_line('Programmabbruch no_data_found bei: '||v_succ);

  when OTHERS then
    dbms_output.put_line('Undefinierter Verarbeitungsfehler: '||SQLERRM);
END;
Sorry, is ab bissl lang geworden, hoffe es passt alles. Hab schon länger nix mehr mit PL/SQL gemacht.

Kommt halt drauf an was du brauchst (weiter in Verarbeitung oder abbrechen). Natürlich kann man auch alles auslagern, zentral abfangen, mit cursor-Attributen (found, notfound) lösen - mehrere Ergebnisse cursor-for-loop, usw. ...
watchdog ist offline   Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:45 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag