Requisitos:
IDE: Visual Studio 2005 .NET
Base de datos: Oracle
Paso 1: Creación
aplicación escritorio
- Vamos crear la siguiente interfaz.
- Cargar fichero XML.
        private void btCargar_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Archivos XML | *.xml";
            openFileDialog1.Multiselect = false;
            openFileDialog1.ShowDialog();
            // Mostramos valor en el textbox
            txtRuta.Text = openFileDialog1.FileName;
        }
- Llamada procedimiento almacenado (botón "Generar")
        private void btGenerar_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.FileName.Trim() != "")
            {
                // Objeto deconexión
                OracleConnection conn = new OracleConnection();
                try
                {                
                    conn.ConnectionString = "TuCadenaConexiónBD";
                    String procedimiento = "MIESQUEMA.PG_XML.PR_XML_TO_TABLE";
                    OracleCommand command = new OracleCommand();
                    command.Connection = conn;
                    command.CommandText = procedimiento;
                    command.CommandType = CommandType.StoredProcedure;
                    // Parametro XML
                    XmlDocument xmlDoc = new XmlDocument();
                    string ruta = openFileDialog1.FileName;
                    xmlDoc.Load(ruta);
                    string xml = xmlDoc.OuterXml;
                    OracleParameter param1 = new OracleParameter();
                    param1.OracleType = OracleType.Clob;
                    param1.Direction = ParameterDirection.Input;
                    param1.ParameterName = "pXmlContent";
                    param1.Value = xml;
                    command.Parameters.Add(param1);
                    // Parametros Salida Resultado
                    OracleParameter param2 = new OracleParameter();
                    param2.OracleType = OracleType.VarChar;
                    param2.Size = 500;
                    param2.Direction = ParameterDirection.InputOutput;
                    param2.ParameterName = "pResultado";
                    param2.Value = "";
                    command.Parameters.Add(param2);
                    conn.Open();
                    int exito = command.ExecuteNonQuery();
                    // Todo bien
                    if (exito == 1)
                    {
                        MessageBox.Show("Resultado: " + command.Parameters["pResultado"].Value.ToString());
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("ERROR: " + ex.Message.ToString());
                }
                finally
                {
                    // Cerramos Conexión
                    conn.Close();
                }
            }
            else
            {
                MessageBox.Show("No se ha seleccionado ningun fichero.");
            }
        }
NOTA: La variable "TuCadenaConexiónBD" se debe remplazar por tu cadena de conexión a la Base de datos.
Paso 2:
Procedimiento para inserción del XML
- Para ello hemos creado dentro de nuestra base de datos el paquete "PG_XML" y el procedimiento "PR_XML_TO_TABLE". Este procedimiento insertara el XML en la tabla “XML_TABLE”.
CREATE OR REPLACE PACKAGE BODY MIESQUEMA."PG_XML" 
AS
PROCEDURE PR_XML_TO_TABLE(
    pXmlContent IN CLOB, 
    pResultado  OUT VARCHAR2 
) 
IS
BEGIN
   
    INSERT INTO XML_TABLE 
    VALUES (SYSDATE, 9999, XMLTYPE(pXmlContent));
    pResultado := 'OK';
    
EXCEPTION 
    WHEN OTHERS THEN
        ROLLBACK;
        pResultado :=  'ERROR EN PG_XML.PR_XML_TO_TABLE: ' || SQLERRM;
END PR_XML_TO_TABLE;
END PG_XML;
/
Paso 3: Creación XML
41975980Z Manuel Cruz Pérez 617841085 
Código fuente: aqui
 

 
No hay comentarios:
Publicar un comentario