miércoles, 9 de febrero de 2011

Ejecución de un Cursor basado en un Query dinámico en ORACLE

Esta característica de ORACLE es muy útil para resolver múltiples necesidades, por ejemplo cuando un mismo algoritmo se aplica a diferentes origines de datos o para generar mecanismos estandarizados de consulta.


Ver código






DECLARE 
    
TYPE EmpCurTyp IS REF CURSOR; 
    
emp_cv   EmpCurTyp
    
emp_rec  emp%ROWTYPE
    
sql_stmt VARCHAR2(200)/* esta puede ser tu parámetro */ 
    
my_job   VARCHAR2(15) :'CLERK';
BEGIN 

    
sql_stmt :'SELECT * FROM emp WHERE job = :j'
  
    OPEN 
emp_cv FOR sql_stmt USING my_job
    
LOOP    
        
FETCH emp_cv INTO emp_rec;    
        EXIT WHEN 
emp_cv%NOTFOUND;      
        
-- procesamiento 
      
    
END LOOP
    CLOSE 
emp_cv;
END;  

La clausula de using sirve solo para asignarle una variable de entrada como parámetro al mismo query dinámico, si no recibe parámetros el query dinámico se puede omitir esa parte.

Transacciones Fiori

  /UI2/CACHE Register service for UI2 cache use /UI2/CACHE_DEL Delete cache entries /UI2/CHIP Chip Registration /UI2/CUST Customizing of UI ...