简体   繁体   中英

Add exception in stored procedure

I want to handle exception using oracle as I haven't done it before. below is my stored procedure.

create or replace
 PROCEDURE GET_VALID_LATLONG
 (
    P_XYCORDINATE IN VARCHAR2,
   P_SAPID IN VARCHAR2,  
   OUTR4GSTATENAME OUT SYS_REFCURSOR  
  )  
  AS
 v_counter number:=0;
 BEGIN
  DBMS_OUTPUT.ENABLE;

   OPEN OUTR4GSTATENAME FOR 
 SELECT DISTINCT(R4GSTATECODE),R4GSTATENAME 
                  FROM R4G_LB.R4GSTATEBOUNDARY_EVW 
                  WHERE SDE.ST_INTERSECTS(SDE.ST_GEOMETRY('POINT 
('||P_XYCORDINATE||')', 3),SHAPE) = 1;   

 END GET_VALID_LATLONG;

how to handle the exception?

UPDATE

I added like this, is it fine when error occurs ??

     create or replace
 PROCEDURE GET_VALID_LATLONG
 (
  P_XYCORDINATE IN VARCHAR2,
 P_SAPID IN VARCHAR2,  
OUTR4GSTATENAME OUT SYS_REFCURSOR  
 )  
 AS
   v_counter number:=0;
BEGIN
DBMS_OUTPUT.ENABLE;

    OPEN OUTR4GSTATENAME FOR 
   SELECT DISTINCT(R4GSTATECODE),R4GSTATENAME 
                   FROM R4G_LB.R4GSTATEBOUNDARY_EVW 
                   WHERE SDE.ST_INTERSECTS(SDE.ST_GEOMETRY('POINT 
   ('||P_XYCORDINATE||')', 3),SHAPE) = 1;   

EXCEPTION

   WHEN OTHERS THEN
      NULL;                      

END GET_VALID_LATLONG;

A list of pre-defined exceptions can be found in the Oracle docs, for example here.

https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/07_errs.htm

You can use this list of exception names in your exception clause, for example

WHEN TOO_MANY_ROWS THEN
    NULL;    -- whatever you wish to do here.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM