Tuesday, 1 May 2012

Multiple Insert with XMLType in Oracle


http://riteshkk2000.blogspot.in/2008/09/sending-xml-string-as-input-parameter.html


create or replace PROCEDURE "INSERT_EMPLOYEE_DATA"

(

ip_emp_details IN XMLTYPE

)

IS


BEGIN


FOR i IN
(

SELECT XMLTYPE.EXTRACT (VALUE (a),

'/Root/Name/text()').getstringval() AS ipName,

XMLTYPE.EXTRACT (VALUE (a),

'/Root/Address/text()').getstringval() AS ipAddress

FROM TABLE

(XMLSEQUENCE (ip_emp_details.EXTRACT

('/EmployeeData/Root')

)

) a )


LOOP


INSERT INTO MULTIPLEUSER

(Name, Address)

VALUES

(i.ipName, i.ipAddress);


END LOOP;


END INSERT_EMPLOYEE_DATA;





Page ------------------------->





using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;


namespace UploadFile
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
         
                GetDataFromXML();

        }

        protected void GetDataFromXML()
        {
            DataSet XNLDataSet = new DataSet();
            string rootPath = MappedApplicationPath();
            string filePath = rootPath + "UploadedFile\\Data.xml";
            XNLDataSet.ReadXml(filePath);
            grdDataXml.DataSource = XNLDataSet.Tables[0].DefaultView;
            grdDataXml.DataBind();

            InsertData(XNLDataSet.Tables[0]);
        }

        private void InsertData(DataTable dt)
        {

            StringBuilder XMLString = new StringBuilder();

            XMLString.Append("<?xml version='1.0' encoding='utf-8' ?>");

            XMLString.Append("<EmployeeData>");


            foreach (DataRow dtRows in dt.Rows)
            {

                XMLString.Append("<Root>");

                XMLString.Append("<Name>"+ dtRows["text"].ToString().Trim()+"</Name>");

                XMLString.Append("<Address>"+ dtRows["value"].ToString().Trim()+"</Address>");

                XMLString.Append("</Root>");

            }


            XMLString.Append("</EmployeeData>");

            //Create the connection String
            OracleConnection oraCon = new OracleConnection();
            OracleCommand oraCmd = new OracleCommand();
            oraCon.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.50.90)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=sampark)));User Id=project1;Password=projectabc;";

            oraCon.Open();

            oraCmd.CommandType = CommandType.StoredProcedure;

            oraCmd.CommandText = "INSERT_EMPLOYEE_DATA";
            // Oracle SP Name

            oraCmd.Connection = oraCon;


            oraCmd.Parameters.Add("ip_emp_details", OracleDbType.XmlType, XMLString.ToString(), ParameterDirection.Input);
            // Oracle SP Input Parameter name

            //Execute the Stored Procedure

           int  recordEffected = oraCmd.ExecuteNonQuery();

            oraCon.Close();

            oraCon.Dispose();

        }

        private string MappedApplicationPath()
        {
            string APP_PATH = System.Web.HttpContext.Current.Request.ApplicationPath.ToLower();
            if (APP_PATH == "/")      //a site
                APP_PATH = "/";
            else if (!APP_PATH.EndsWith(@"/")) //a virtual
                APP_PATH += @"/";

            string it = System.Web.HttpContext.Current.Server.MapPath(APP_PATH);
            if (!it.EndsWith(@"\"))
                it += @"\";
            return it;

        }


    }
}


Oracle Helper.cs




<connectionStrings>
    <add name="ConStrng" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.50.10)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=excise)));User Id=excise;Password=vat123$;"/>
</connectionStrings>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Configuration.Assemblies;
using CommercialTaxMissionMode.ObjectModel;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

namespace CommercialTaxMissionMode.DAL
{
    public class OracleHelper
    {
        string constrg = System.Configuration.ConfigurationManager.ConnectionStrings["ConStrng"].ToString();

        #region Reader
        /// <summary>
        /// Returns a datareader for the oracle command
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <param name="prms"></param>
        /// <returns></returns>

        public OracleDataReader ExecuteReader(string cmdText, OracleParameter[] prms, CommandType Type)
        {
            try
            {
                OracleConnection conn = new OracleConnection(constrg);
                using (OracleCommand cmd = new OracleCommand(cmdText, conn))
                {
                    cmd.CommandType = Type;

                    if (prms != null)
                    {
                        foreach (OracleParameter p in prms)
                        {
                            cmd.Parameters.Add(p);
                        }
                    }
                    conn.Open();
                    return cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
           
        }


        /// <summary>
        /// Returns a datareader for the oracle command
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <returns></returns>
        public OracleDataReader ExecuteReader(string cmdText, CommandType Type)
        {
            return ExecuteReader(cmdText, null, Type);
        }
        #endregion

        #region DataSet
        /// <summary>
        /// Returns a dataset for the oracle command
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <param name="prms"></param>
        /// <returns></returns>


        public DataSet ExecuteDataSet(string cmdText, OracleParameter[] prms,CommandType Type)
        {
            try
            {
                using (OracleConnection conn = new OracleConnection(constrg))
                {
                    DataSet ds = new DataSet();
                    using (OracleCommand cmd = new OracleCommand(cmdText, conn))
                    {
                        cmd.CommandType = Type;
                        if (prms != null)
                        {
                            foreach (OracleParameter p in prms)
                            {
                                cmd.Parameters.Add(p);
                            }
                        }
                        OracleDataAdapter adpt = new OracleDataAdapter(cmd);
                        adpt.Fill(ds);
                        return ds;
                    }
                }
            }
            catch (Exception ex)
            {
               
                throw ex;
            }
         
        }



        /// <summary>
        /// Returns a dataset for the oracle command
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <returns></returns>
        public DataSet ExecuteDataSet(string cmdText, CommandType Type)
        {
            return ExecuteDataSet(cmdText, null, Type);
        }

        #endregion
       
        #region DataTable
        /// <summary>
        /// Returns a datatable for the oracle command
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <param name="prms"></param>
        /// <returns></returns>


        public DataTable ExecuteDataTable(string cmdText, OracleParameter[] prms, CommandType Type)
        {
            try
            {
                using (OracleConnection conn = new OracleConnection(constrg))
                {
                    DataTable dt = new DataTable();
                    using (OracleCommand cmd = new OracleCommand(cmdText, conn))
                    {
                        cmd.CommandType = Type;
                        if (prms != null)
                        {
                            foreach (OracleParameter p in prms)
                            {
                                cmd.Parameters.Add(p);
                            }
                        }
                        OracleDataAdapter adpt = new OracleDataAdapter(cmd);
                        adpt.Fill(dt);
                        return dt;
                    }
                }
            }
            catch (Exception ex)
            {
               
                throw ex;
            }

         
        }



        /// <summary>
        /// Returns a datatable for the oracle command
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <returns></returns>
        public DataTable ExecuteDataTable(string cmdText, CommandType Type)
        {
            return ExecuteDataTable(cmdText, null, Type);
        }

        #endregion
       
        #region NonQuery


        /// <summary>
        /// Executes a non query
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <param name="prms"></param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText, OracleParameter[] prms, CommandType Type)
        {
            try
            {
                using (OracleConnection conn = new OracleConnection(constrg))
                {
                    using (OracleCommand cmd = new OracleCommand(cmdText, conn))
                    {
                        cmd.CommandType = Type;
                        if (prms != null)
                        {
                            foreach (OracleParameter p in prms)
                            {
                                cmd.Parameters.Add(p);
                            }
                        }
                        conn.Open();
                        return cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
               
                throw ex;
            }
         
        }

        /// <summary>
        /// Executes a non query
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <returns></returns>


        public int ExecuteNonQuery(string cmdText, CommandType Type)
        {
            return ExecuteNonQuery(cmdText, null, Type);
        }
        #endregion

        #region Scalar
        /// <summary>
        /// Returns the scalar object of the query
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <param name="prms"></param>
        /// <returns></returns>


        public object ExecuteScalar(string cmdText, OracleParameter[] prms, CommandType Type)
        {
            try
            {
                using (OracleConnection conn = new OracleConnection(constrg))
                {
                    using (OracleCommand cmd = new OracleCommand(cmdText, conn))
                    {
                        cmd.CommandType = Type;
                        if (prms != null)
                        {
                            foreach (OracleParameter p in prms)
                            {
                                cmd.Parameters.Add(p);
                            }
                        }
                        conn.Open();
                        return cmd.ExecuteScalar();
                    }
                }
            }
            catch (Exception ex)
            {
               
                throw ex;
            }
         
        }




        /// <summary>
        /// Returns the scalar object of the query
        /// </summary>
        /// <param name="constrg"></param>
        /// <param name="cmdText"></param>
        /// <returns></returns>
        public object ExecuteScalar(string cmdText, CommandType Type)
        {
            return ExecuteScalar(cmdText, null, Type);
        }
        #endregion


    }
}