CREATE OR REPLACE procedure p_xmlfromquery ( --se crea el
procedimiento
lv_query varchar, --se
crean los parametros
LV_DATAFORMA VARCHAR2,
tag_padre varchar2,
tag_linea varchar2,
resultado out varchar2,
gn_registros out number,
pn_cod_error out number,
pv_error out varchar2) IS
ctx dbms_xmlquery.ctxHandle; --se
crea la variable de contexto ctxHandle
BEGIN
--se
inicia el bloque
--instanciar
o iniciar una clase
ctx := dbms_xmlquery.newContext(lv_query);
--a la variable contexto se le asigna
el nuevo contexto(variable de la query)
if
LV_DATAFORMA is not null then
--se inicia un ciclo if donde la
variable forma no es nula entonces
DBMS_XMLQUERY.SETDATEFORMAT(CTX,LV_DATAFORMA);
--se setea el formato de
fecha(contexto, variable data forma)
end if;
--fin
del if
--setearle
valores para definir su comportamiento
if
tag_padre is not null then
--se inicia un ciclo if donde la
variable de etiqueta padre no es nula entonces
DBMS_XMLquery.SETROWSETTAG(ctx,tag_padre);
-- se setea la fila y se setea la
etiqueta(contexto, tag_padre)
end if; --fin
del if
if
tag_linea is not null then
--se inicia un ciclo if donde la
variable de etiqueta hija no es nula entonces
DBMS_XMLQUERY.SETROWTAG (ctx,tag_linea);
DBMS_XMLQUERY.SETROWTAG (ctx,tag_linea);
-- se setea la fila y se setea la
etiqueta(contexto, tag_hija)
end if;
--fin
del if
resultado:=DBMS_XMLQUERY.GETXML(ctx);
--la variable resultado es el
obtiene el xml
gn_registros:=DBMS_XMLQUERY.GETNUMROWSPROCESSED(ctx);
--la variable registros cuenta el
numero de celdas procesadas
--
cerrar o destruir la clase
DBMS_XMLQUERY.CLOSECONTEXT(ctx);
--se cierra o destruye el contexto
exception when others then
--manejo de excepciones
pn_cod_error:=SQLERRM; --ver
el codigo de error
end;
--fin
del bloque
end;
--fin del procediemiento
No hay comentarios:
Publicar un comentario