XMLType输出参数和ODP.NET

时间:2013-08-29 06:08:14

标签: c# odp.net xmltype out-parameters

我尝试在我的表和ODP.NET中使用XMLType列。

使用ODP.NET和XMLTYPE out参数的任何完整示例源代码?

我的程序:

PROCEDURE GET_DATA_DEPLOY(pPROYECT IN VARCHAR2,
                  pETIQ IN VARCHAR2 DEFAULT NULL,
                  pMOMENT OUT TIMESTAMP,
                  pDATA OUT XMLTYPE)

用于测试:功能和程序。

FUNCTION FRKDATA_GET_XMLTYPE(num IN NUMBER, xml1 IN XMLTYPE) RETURN XMLTYPE IS
  xmlout XMLTYPE;
  BEGIN
  SELECT XMLTYPE_COL 
  INTO xmlout
  FROM POC_TEST_XML_TABLE
  WHERE NUM_COL = num;
  RETURN xmlout;
  END FRKDATA_GET_XMLTYPE;


PROCEDURE FRKDATA_TESTXML(qry in VARCHAR2, rslt OUT XMLTYPE) AS
BEGIN
 rslt := dbms_xmlgen.getxmltype(qry);
END FRKDATA_TESTXML;

https://entlib.codeplex.com/discussions/454750

中查看

我收到“连接已关闭”错误

只是,我找到了这个样本,但是没有OUT参数。

/*
create or replace function xmlproc(v1 in xmltype) return xmltype is
begin
return v1;
end;
/
*/

using System;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

class Program
{
    static void Main(string[] args)
    {
        using (OracleConnection con = new OracleConnection())
        {
            con.ConnectionString = "user id=scott;password=tiger;data source=orcl";
            con.Open();
            using (OracleCommand cmd = new OracleCommand("",con))
            {
                cmd.CommandText = "xmlproc";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new OracleParameter("return", OracleDbType.XmlType)).Direction = ParameterDirection.ReturnValue;
                cmd.Parameters.Add(new OracleParameter("v1", OracleDbType.XmlType)).Direction = ParameterDirection.Input;
                cmd.Parameters["v1"].Value = "<a>b</a>";
                cmd.ExecuteNonQuery();
                Console.WriteLine(((OracleXmlType)cmd.Parameters["return"].Value).Value);
            }
        }
    }
}

更新

来自Oracle的Alex Keh,以下内容适用于我。

PROCEDURE "XMLPROC" (  "PARAM1" OUT XMLTYPE) IS
BEGIN
  PARAM1 := dbms_xmlgen.getxmltype('SELECT FIRST_NAME FROM EMPLOYEES WHERE EMPLOYEE_ID=100');
END;


OracleConnection con = new OracleConnection();
con.ConnectionString = conString;
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "xmlproc";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new OracleParameter("xmlout", OracleDbType.XmlType)).Direction = ParameterDirection.Output;
            cmd.ExecuteNonQuery();
            Console.WriteLine(((OracleXmlType)cmd.Parameters["xmlout"].Value).Value);

使用Enterprise Library的任何版本源代码?

参考文献:https://entlib.codeplex.com/discussions/454750

0 个答案:

没有答案