Intercettare l'eccezione TOO_MANY_ROWS in Oracle

Mattepuffo's logo
Intercettare l'eccezione TOO_MANY_ROWS in Oracle

Intercettare l'eccezione TOO_MANY_ROWS in Oracle

Le funzioni, in qualsiasi database, non possono restituire più di un record.

Nel caso in cui la SELECT restituisca più record, Oracle va in eccezione con l'errore TOO_MANY_ROWS.

E' possibile intercettare questa eccezione, e agire di conseguenza.

Facciamo un esempio:

CREATE OR REPLACE FUNCTION FN_B2B_TROVA_RAGSOC_GEN_CONTO (
	TIPO_CONTO IN CHAR,
	IN_CONTO IN CHAR
)
	RETURN CHAR IS VAL VARCHAR(64);
--
BEGIN
	SELECT GA.RAGSOC INTO VAL
	FROM GEN_ANAG GA;
	RETURN(VAL);
	EXCEPTION 
        WHEN TOO_MANY_ROWS THEN VAL := '0';
	RETURN(VAL);
END FN_B2B_TROVA_RAGSOC_GEN_CONTO;

La query estrae appositamente tanti records.

Sotto usiamo la parola chiave EXCEPTION, indicando quale errore vogliamo intercettare.

Ovviamente, è un esempio molto banale, la mia query reale è ben diversa.

Ma fa capire la sinstassi e cosa quando abbiamo quell'eccezione.

Enjoy!


Condividi

Commentami!