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!
database oracle exception sql too_many_rows
Commentami!