1.Incluye todos los comandos de SQL.
2. Es una extensión de SQL, ya que este es un lenguaje no completo dado que no incluye las herramientas clásicas de programación. Por eso, PL/SQL amplia sus posibilidades al incorporar las siguientes sentencias:
- Control condicional
- Ciclos
3. Incorpora opciones avanzadas en:
- Control y tratamiento de errores llamado excepciones.
- Manejo de cursores.
Estructura del bloque de código
La organización del bloque de código de PL/SQL, compuesto por cuatro secciones DECLARE, BEGIN, EXCEPTION y END.
EJEMPLO CODIGO FUENTE DESDE ORACLE FORMS
Código Fuente:
Declare
repid REPORT_OBJECT;
v_rep VARCHAR2(100);
rep_status Varchar2(20);
BEGIN
repid := find_report_object('REP_VINCULADO');
-- Determinamos si se visualizará la ventana de parámetros
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_OTHER,'paramform=no');
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_EXECUTION_MODE,BATCH);
--Fijamos el valor para el tipo de ejecución (SYNCHRONOUS, ASYNCHRONOUS)
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_COMM_MODE,SYNCHRONOUS);
--Fijamos el valor para el tipo de salida(cache, printer, file, mail..)
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,CACHE);
--fijamos el valor para el formato de salida del reporte (html, pdf, rtf)
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,'html');
--fijamos el valor para el servidor de reportes que ejecutará el report
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_SERVER,'nombre_del_servicio_de_reportes');
--ejecutamos el reporte
v_rep := RUN_REPORT_OBJECT(repid);
rep_status := report_object_status(v_rep);
WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED') LOOP
rep_status := report_object_status(v_rep);
END LOOP;
if rep_status = 'FINISHED' then
--Visualizamos la salida del reporte
WEB.SHOW_DOCUMENT('/reports/rwservlet/getjobid'||substr(v_rep,instr(v_rep,'_',-1)+1)||'?'||'server=nombre_del_servicio_de_reportes','_blank');
Else
message('error en la ejecución');
end if;
END;
No hay comentarios:
Publicar un comentario