matinha 0 Denunciar post Postado Abril 20, 2009 Olá a todos chamo-me Mário e estou a precisar de ajuda dos masters de Oracle...:) Precisava de ajuda.... O que quero é criar uma store procedure que receba um ficheiro XML, este ficheiro é modificado de 1 em 1 hora a store procedure tem que apanhar os valores das tags do ficheiro XML e fazer um insert numa tabela da base de dados Oracle Alguém já fez coisa parecida Cumps a todos e obrigado pela ajuda matinha Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 20, 2009 Existem duas packages para isto a dbms_xml% (mais de uma) e a dbms_job Eu nunca usei o XML mas pelo que sei é simples de usar. O job é uma ferramenta para se executar procediemntos com hora agendada. http://imasters.com.br/artigo/2462/xml/oracle_e_xml/ Compartilhar este post Link para o post Compartilhar em outros sites
matinha 0 Denunciar post Postado Abril 20, 2009 create or replace PROCEDURE INSERTXML2( p_xml_in XMLType, p_table IN VARCHAR2 ) AS v_context DBMS_XMLStore.ctxType; v_rows NUMBER; BEGIN v_context := DBMS_XMLStore.newContext(p_table); DBMS_XMLStore.setRowTag(v_context, 'ITEM'); DBMS_XMLStore.setUpdateColumn(v_context,'ORDERNUMBER'); -- OrderNumber-AUFNR -- DBMS_XMLStore.setUpdateColumn(v_context,'VORNR'); DBMS_XMLStore.setUpdateColumn(v_context,'MATERIAL'); -- Material-MATNR DBMS_XMLStore.setUpdateColumn(v_context,'LINENUMBER'); -- LineNumber--ARBPL DBMS_XMLStore.setUpdateColumn(v_context,'NOMSPEED'); -- NomSpeed-BMSCH --DBMS_XMLStore.setUpdateColumn(v_context,'GSTRS' ||' '|| 'GSUPS'); --StartDate --DBMS_XMLStore.setUpdateColumn(v_context,'GLTRS' ||' '|| 'GLUPS'); --FinishDate DBMS_XMLStore.setUpdateColumn(v_context,'TARGETQTY'); --TargetQty-GAMNG DBMS_XMLStore.setUpdateColumn(v_context,'UNIT'); --Unit-MEINS DBMS_XMLStore.setUpdateColumn(v_context,'SYSTEMSTATUS'); -- SystemStatus-OBSTA -- DBMS_XMLStore.setUpdateColumn(v_context,'GLUPS'); -- DBMS_XMLStore.setUpdateColumn(v_context,'GSUPS'); -- DBMS_XMLStore.setUpdateColumn(v_context,'LTXA1'); -- DBMS_XMLStore.setUpdateColumn(v_context,'MAKTX'); v_rows := DBMS_XMLStore.insertXML(v_context, p_xml_in); DBMS_XMLStore.closeContext(v_context); END; alguem me podia testar esta stored procedure?!?!? mudava os campos para uma tabela que já tivesse criada e criava um ficheiro XML?!?!?! podia ser...ficava mto grato cumps matinha Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 20, 2009 Qual sua dúvida ? Compartilhar este post Link para o post Compartilhar em outros sites
matinha 0 Denunciar post Postado Abril 20, 2009 a mim da-me um erro nao se é devido à store procedure ou se é do SQL developer que estou a utilizar que dá erros muito loucos...neste aqui quando mando correr a procedure e digo qual a tabela onde deve por a informação diz que a tabela nao recebe dados daquele tipo...nao sei bem o que quer dizer...amanha faço post do erro Compartilhar este post Link para o post Compartilhar em outros sites
matinha 0 Denunciar post Postado Abril 22, 2009 Olá a todos, tenho esta stored procedure: create or replace PROCEDURE INSERTXML( p_xml_in CLOB, p_table IN VARCHAR2 ) AS insCtx DBMS_XMLStore.ctxType; v_rows NUMBER; BEGIN insCtx := DBMS_XMLStore.newContext(p_table); -- get saved context dbms_xmlstore.setRowTag(insCtx,'Row'); DBMS_XMLStore.clearUpdateColumnList(insCtx); -- clear the update settings -- set the columns to be updated as a list of values DBMS_XMLStore.setUpdateColumn(insCtx,'ORDERNUMBER'); DBMS_XMLStore.setUpdateColumn(insCtx,'PLANT'); DBMS_XMLStore.setUpdateColumn(insCtx,'MATERIAL'); DBMS_XMLStore.setUpdateColumn(insCtx,'LINENUMBER'); DBMS_XMLStore.setUpdatecolumn(insCtx,'NOMSPEED'); DBMS_XMLStore.setUpdatecolumn(insCtx,'STARTDATE'); DBMS_XMLStore.setUpdatecolumn(insCtx,'FINISHDATE'); DBMS_XMLStore.setUpdatecolumn(insCtx,'TARGETQTY'); DBMS_XMLStore.setUpdatecolumn(insCtx,'UNIT'); DBMS_XMLStore.setUpdatecolumn(insCtx,'SYSTEMSTATUS'); v_rows := DBMS_XMLStore.insertXML(insCtx, p_xml_in); -- Close the context DBMS_XMLStore.closeContext(insCtx); END; ela funciona bem no Oracle SQL Developer mas na aplicação SAP Mii devido ao tamanho máximo do tipo string ser de 4000 e o ficheiro XML ser maior tenho que o ler na stored procedure, alguém me pode dar umas dicas como fazer?!?! cumps matinha Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 22, 2009 Tópicos mesclados. Compartilhar este post Link para o post Compartilhar em outros sites