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

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;
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.
Inoltre è possibile gestire anche l'eventuale messaggio di errore inserendo

codice:
     exception
     when others then
          V_messerro := substr(sqlerrm,1,100);
          return (V_messerro);
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:
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