Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Gestione degli errori in Stored Procedure DB2
lunedì 16 febbraio 2009 - 14.39
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lmattioli
Profilo
| Newbie
16
messaggi | Data Invio:
lun 16 feb 2009 - 14:39
Salve a tutti,
ho la necessità di creare una stored procedure per il database DB2. Questa stored procedure deve ricevere in input i valori da inserire in una tabella e deve restituire in output l'esito dell'operazione.
Il problema si pone quando cerco di intercettare gli eventuali errori d'inserimento (es. chiave duplicata) e li voglio restituire al chiamate con dei codici di errore personali: per esempio il codice d'errore 23505 (chiave duplicata) deve essere mappato diversamente.
Per essere più chiaro posto la stored.
CREATE PROCEDURE STP_INS_ANAG_DUE ( IN COD_ANAG VARCHAR(50),
IN DESC_ANAG VARCHAR(50),
OUT COD_RET VARCHAR(50),
OUT SQLSTATE_OUT CHAR(5),
OUT SQLCODE_OUT INT
)
SPECIFIC STP_INS_ANAG_DUE
MODIFIES SQL DATA
------------------------------------------------------------------------
P1: BEGIN
-- Dichiara variabili
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE SQLCODE INT DEFAULT 0;
-- Dichiara gestore
DECLARE EXIT HANDLER FOR SQLEXCEPTION
SELECT SQLSTATE, SQLCODE INTO SQLSTATE_OUT, SQLCODE_OUT
FROM SYSIBM.SYSDUMMY1;
IF TRIM(STP_INS_ANAG_DUE.COD_ANAG) = '' THEN
SET STP_INS_ANAG_DUE.COD_RET = 'FLY01';
RETURN 1;
END IF;
INSERT INTO ANAG (COD_ANAG, DESC_ANAG)
VALUES (STP_INS_ANAG_DUE.COD_ANAG, STP_INS_ANAG_DUE.DESC_ANAG);
SET SQLCODE_OUT = SQLCODE;
SET SQLSTATE_OUT = SQLSTATE;
IF SQLSTATE_OUT = '23505' THEN
SET STP_INS_ANAG_DUE.COD_RET = 'FLY02';
END IF;
END P1
Non riesco a valorizzare il parametro COD_RET poiché la stored si ferma prima quando si genera l'eccezione sql.
Grazie...ciao
mattio
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !