CREATE OR REPLACE procedure p_importafromxml( --se crea el procedimiento
pv_tabla varchar2, --se
crean los parametros
pv_esquema varchar2) is
l_bfile BFILE;
--se crea el archivo bfile
vv_esquema_tabla varchar2(2000); --se
crea la variable esquema tabla
vc_xml clob; --se
crea la variable clob
vn_registros number;
--se crea la variable de los registros
ctx dbms_xmlsave.ctxtype; --se
crea la variable xmlsave
begin
--inicio del bloque
dbms_lob.createtemporary(vc_xml, cache=>FALSE);
--se crea un lob.temporary
que aproveche todo el clob
l_bfile := BFileName('XMLEXPORT','datos.xml');
--a la variable clob se le
asigna bfilename (directorio,archivo)
dbms_lob.open(l_bfile, dbms_lob.lob_readonly);
--se hace un
lob.open(variable bfile, lob.readonly)
dbms_lob.loadFromFile(dest_lob =>
vc_xml,
--lob.loadfromfile con los
parametros correspondientes
src_lob => l_bfile,
amount => dbms_lob.getLength(l_bfile));
--lob.getlength (bfile)
dbms_lob.close(l_bfile); --lob.close(bfile)
vv_esquema_tabla:=pv_esquema||'.'||pv_tabla;
--esquema + tabla
ctx:=dbms_xmlsave.newcontext(vv_esquema_tabla);
--a la variable contexto se
le asigna uno nuevo contexto(esquema.tabla)
dbms_xmlsave.setrowtag(ctx,'DATA_RECORD');
--se setea fila y
etiqueta(contexto, primera etiqueta del xml)
vn_registros:=dbms_xmlsave.insertxml(ctx,vc_xml);
--a la variable registros se
le asigna el xmlsave.insert(contexto,variable clob)
dbms_xmlsave.closecontext(ctx); --se cierra el
contexto
end;
--fin del bloque
end p_importafromxml; --fin
del procedimiento
569
ResponderEliminarBuenas ing Roberto ¿Podría explayarse un poquito mas?
ResponderEliminar