Ciao,
ho necessità di effettuare determinate operazioni a seconda del codice sqlcode di ritorno da una istruzione Oracle (in particolare una select).
Lo schema è abbastanza semplice
1. Creare una Function Oracle
2. Recuperare il codice di ritorno
In particolare
1. La funzione oracle dovrà essere del tipo
Questa tornerà un valore numerico (che gestisco come stringa) corrispondente all'errore. Ricordo che anche nel caso di esecuzione corretta, l'istruzione torna comunque un valore.codice:CREATE OR REPLACE FUNCTION F_CHECESTRAMBIGARE (VC_CODIAZIE in varchar2 ) return varchar2 is V_messerro varchar2(100); V_Ambito varchar2(100); V_CodiDettCate varchar2(10); V_ImpoMini varchar2(50); V_ImpoMaxx varchar2(50); V_CodiAzie varchar2(10); V_CodiRegi varchar2(10); Begin /* Estrazione degli ambiti e verifica eventuale errore */ select ambito, codi_dett_cate, impo_mini, impo_maxx,codi_azie,codi_regi into V_Ambito,V_CodiDettCate, V_ImpoMini,V_ImpoMaxx,V_CodiAzie,V_CodiRegi from ---- (CORPO DELLA SELECT) ---- order by codi_dett_cate,impo_mini,impo_maxx,codi_regi; exception when others then return(ABS(SQLCODE)); End;
Inoltre è possibile gestire anche l'eventuale messaggio di errore inserendo
2. Nella pagina asp inserisco questa semplice chiamata, verificando che se il codice di ritorno sia 1422 esegue una istruzione, mentre in caso contrario un'altra.codice:exception when others then V_messerro := substr(sqlerrm,1,100); return (V_messerro);
codice:sqlcheck=" select F_CHECESTRAMBIGARE("&vc_codiazie&") codiceerrore "_ &" from dual ;" Set rscheck = cn.Execute(sqlcheck) vc_codiceerrore =rscheck("codiceerrore") rscheck.Close Set rscheck= Nothing if vc_codiceerrore="1422" then sql ="SELECT ambito,codi_dett_cate, impo_mini, impo_maxx,codi_azie,codi_regi "_ &" FROM V_ASP_AMBIINTE0001 where CODI_AZIE="&vc_codiazie&" ; " else sql ="SELECT ambito,codi_dett_cate, impo_mini, impo_maxx,codi_azie,codi_regi "_ &" FROM V_ASP_AMBIINTEXXX where CODI_AZIE="&vc_codiazie&" ; " end if
Spero che questo intervento possa esservi utile.
![]()
ps. chiaramente sarebbe preferibile non generare errori nelle istruzioni Oracle...ma in questo caso non avevo alternative e mi è servito per trovare questa soluzione![]()

Rispondi quotando