如何运行和调试Oracle存储过程


1. 编写Oracle存储过程脚步如下:

  1. CREATE OR REPLACE PROCEDURE P_AUTO_CREATE_PARTITION  
  2.   (Result     Out int,  
  3.    LogErrDesc Out varchar2  
  4.   )   
  5.   is  
  6.     type TypeTable is table of varchar2(20);    
  7.     CreatePartitionErr exception;  
  8.     days TypeTable;  
  9. BEGIN    
  10.   Result :0;  
  11.   SELECT DATETIME   bulk collect into days FROM   
  12.   (  
  13.     SELECT TO_CHAR(TRUNC(SYSDATE-2,'dd'),'YYYYMMDD') AS DATETIME FROM   DUAL  
  14.     UNION  
  15.     SELECT TO_CHAR(TRUNC(SYSDATE-1,'dd'),'YYYYMMDD') AS DATETIME FROM   DUAL  
  16.     UNION        
  17.     SELECT TO_CHAR(TRUNC(SYSDATE,'dd'),'YYYYMMDD') AS DATETIME FROM   DUAL  
  18.     UNION  
  19.     SELECT TO_CHAR(TRUNC(SYSDATE+1,'dd'),'YYYYMMDD') AS DATETIME  FROM   DUAL  
  20.     UNION  
  21.     SELECT TO_CHAR(TRUNC(SYSDATE+2,'dd'),'YYYYMMDD')  AS DATETIME FROM   DUAL       
  22.   );  
  23.      
  24.   for i in 1..days.count loop  
  25.           if bruce_partiton.CreatePartitions('T_CDT_1X_BASIC_Partion',days(i))<0 then raise CreatePartitionErr; end if;  
  26.   end loop;  
  27.   --名字写错了bruce_partiton,应该为bruce_partition  
  28.     
  29.   commit;  
  30.   --异常处理  
  31. EXCEPTION  
  32.   WHEN CreatePartitionErr THEN rollback; Result := -1; LogErrDesc :SQLERRM; commit; RETURN;  
  33.   WHEN OTHERS THEN  
  34.     rollback;  
  35.     Result := -2;  
  36.     LogErrDesc :'CDM_CTCALLTRACEINFO_PRC_NEW Fail!'||substr(dbms_utility.format_error_stack,1,200);  
  37.     commit;  
  38.     RETURN;  
  39. END P_AUTO_CREATE_PARTITION;  
  40. /  

2. 调试 

   在PL/SQL中选择存储过程,右键TEST, ADD DEBUGINFO,



3. 运行,在Program Window中

相关内容