Anmelden

View Full Version : Felhler in SQL-Prozedur abfangen



HPKahn
29-03-05, 12:49
Hallo NG,

eben in der Hektik des Tages die falsche NG erwischt desahlb hier nochmal.

wie kann ich ich in einer SQL-Prozedur einen Fehler abfangen?

In nachfolgenden SQL-Statement soll ein Fehlerhinweis erfolgen wenn nach den spezifizierten Informationen kein Datensatz gefunden wird.

-- Selektiere Metadaten-Informationen aus CC-Master
SELECT UPPER ( TEXTVALUE ) INTO V_WHEREIMPORT FROM CC_MASTER . META_ENV WHERE UPPER ( APPLIKATION ) = 'STATISTISCHE KOSTENSTELLEN' AND UPPER ( CHECKTEXT ) = 'WHEREIMPORT' ;
Folgendes habe ich ausprobiert, aber ohne Erfolg (weiß aber auch nicht richtig wie ich das einbauen kann)
DECLARE EXIT HANDLER FOR SQLSTATE VALUE '02000'
--SIGNAL SQLSTATE '02000'
-- SET MESSAGE_TEXT = 'nicht
gefunden' ;

wer weiß Rat, vielen Dank im voraus

Grüße HP
<!-- / message -->

perry_rhodan
30-03-05, 13:38
Hallo NG,

eben in der Hektik des Tages die falsche NG erwischt desahlb hier nochmal.

wie kann ich ich in einer SQL-Prozedur einen Fehler abfangen?

In nachfolgenden SQL-Statement soll ein Fehlerhinweis erfolgen wenn nach den spezifizierten Informationen kein Datensatz gefunden wird.

-- Selektiere Metadaten-Informationen aus CC-Master
SELECT UPPER ( TEXTVALUE ) INTO V_WHEREIMPORT FROM CC_MASTER . META_ENV WHERE UPPER ( APPLIKATION ) = 'STATISTISCHE KOSTENSTELLEN' AND UPPER ( CHECKTEXT ) = 'WHEREIMPORT' ;
Folgendes habe ich ausprobiert, aber ohne Erfolg (weiß aber auch nicht richtig wie ich das einbauen kann)
DECLARE EXIT HANDLER FOR SQLSTATE VALUE '02000'
--SIGNAL SQLSTATE '02000'
-- SET MESSAGE_TEXT = 'nicht
gefunden' ;

wer weiß Rat, vielen Dank im voraus

Grüße HP
<!-- / message -->
bin auch noch kein spezialist in sql-proceduren, habe aber folgendes gemacht:
am anfang:
DECLARE END_TABLE INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET END_TABLE = 1;
DECLARE EXIT HANDLER FOR SQLSTATE '38S03'
RESIGNAL SQLSTATE '38S03'
SET MESSAGE_TEXT = 'UB_UPDATE:Keine Unterbrechung gefunden.';


SELECT ub_von, ub_bis, abonr, lfd
INTO ubvon, ubbis, x_abonr, x_lfd
FROM vaboub
WHERE recno = p_recno
AND ub_erl = 'N';
-- wenn kein Satz gefunden end_table = 1
IF (end_table = 1)
THEN SIGNAL SQLSTATE '38S03';
END IF;