如何将XML列表传递给oracledb中的过程 [英] How can I pass my XML list to the procedure in oracledb

查看:49
本文介绍了如何将XML列表传递给oracledb中的过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

错误:ORA-01036:非法变量名称/编号



error:ORA-01036: illegal variable name/number

create or replace package body Test_Package is

  PROCEDURE sp_xmldata(v_xml_list11 clob) as
  BEGIN
    insert into xmldata
    (x_name, x_password, x_email)
    select name, password, email
      from xmltable('/NewDataSet/table' passing xmltype(v_xml_list11)
                    columns
                    
                    name VARCHAR2(100) path 'name',
                    password VARCHAR2(100) path 'password',
                    email VARCHAR2(100) path 'email');
  END;
end Test_Package;
















        protected void btnsubmit_Click(object sender, EventArgs e)
        {
            	


          string oradb = "Data Source = online; User Id = tsregs_user; Password = tsregs_user;";
          OracleConnection conn = new OracleConnection(oradb);
            List<Details> _objlist = new List<Details>();
            Details _obj = new Details();
            _obj.name = txtUsername.Text;
            _obj.password = txtPassword.Text;
            _obj.email = txtEmail.Text;
            _objlist.Add(_obj);
            XElement xml_list11 = new XElement("NewDataSet",
                                           from element in _objlist
                                           select new XElement("table",
                                                new XElement("x_name", element.name),
                                                new XElement("x_password", element.password),
                                                new XElement("x_email", element.email)
                                               ));

            OracleCommand cmd = new OracleCommand("Test_Package.sp_xmldata", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(xml_list11.ToString(), DbType.Xml);

            conn.Open();
            cmd.ExecuteNonQuery();
        }

    }
}





我尝试过:



i将我的xml列表传递给oracledb中的过程



What I have tried:

i passed my xml list to the procedure in oracledb

推荐答案

Quote:

cmd.Parameters.Add(xml_list11.ToString(),DbType.Xml);

cmd.Parameters.Add(xml_list11.ToString(), DbType.Xml);



有你的问题。 添加方法的第一个参数是参数的名称。您传递的XML字符串不是有效的参数名称。



尝试:


There's your problem. The first argument to the Add method is the name of the parameter. You are passing an XML string, which is not a valid parameter name.

Try either:

cmd.Parameters.Add("v_xml_list11", DbType.Xml).Value = xml_list11;



或:


Or:

cmd.Parameters.AddWithValue("v_xml_list11", xml_list11);


这篇关于如何将XML列表传递给oracledb中的过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆