プライマリ・コンテンツに移動

Oracle® Data Provider for .NET開発者ガイド ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows E88311-03 |
| 目次 | 索引

前 | 次 |

# OracleXmlQueryPropertiesクラス

`OracleXmlQueryProperties`オブジェクトは、`XmlCommandType`プロパティが`Query`である場合に、`OracleCommand`クラスにより使用されるXMLプロパティを表します。

クラスの継承

`System.Object`

`System.OracleXmlQueryProperties`

宣言

    public sealed class OracleXmlQueryProperties : ICloneable

要件

プロバイダ | ODP.NET管理対象外ドライバ | ODP.NET管理対象ドライバ
--- | --- | ---
アセンブリ | `Oracle.DataAccess.dll` | `Oracle.ManagedDataAccess.dll`
ネームスペース | `Oracle.DataAccess.Client` | `Oracle.ManagedDataAccess.Client`
.NET Framework | 3.5, 4.5, 4.6, 4.7 | 4.5, 4.6, 4.7

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

備考

`OracleXmlQueryProperties`は、`OracleCommand`クラスの`XmlQueryProperties`プロパティを使用してアクセスおよび変更できます。各`OracleCommand`オブジェクトには、`XmlQueryProperties`プロパティに、`OracleXmlQueryProperties`クラスの独自のインスタンスが含まれます。

`OracleXmlQueryProperties`の新規インスタンスを取得するには、デフォルトのコンストラクタを使用します。`OracleXmlQueryProperties``.Clone()`メソッドを使用して、`OracleXmlQueryProperties`インスタンスのコピーを取得します。

例

この例では、リレーショナル・データがXMLで取得されます。

    // C#

    using System;
    using System.IO;
    using System.Data;
    using System.Xml;
    using System.Text;
    using Oracle.DataAccess.Client;

    class OracleXmlQueryPropertiesSample
    {
      static void Main()
      {
        int rows = 0;
        StreamReader sr = null;

        // Define the XSL document for doing the transform.
        string xslstr = "<?xml version='1.0'?>\n" +
          "<xsl:stylesheet version=\"1.0\"" +
          " xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n" +
          "  <xsl:output encoding=\"utf-8\"/>\n" +
          "  <xsl:template match=\"/\">\n" +
          "    <EMPLOYEES>\n" +
          "      <xsl:apply-templates select=\"ROWSET\"/>\n" +
          "    </EMPLOYEES>\n" +
          "  </xsl:template>\n" +
          "  <xsl:template match=\"ROWSET\">\n" +
          "      <xsl:apply-templates select=\"ROW\"/>\n" +
          "  </xsl:template>\n" +
          "  <xsl:template match=\"ROW\">\n" +
          "    <EMPLOYEE>\n" +
          "    <EMPLOYEE_ID>\n" +
          "      <xsl:apply-templates select=\"EMPNO\"/>\n" +
          "    </EMPLOYEE_ID>\n" +
          "    <EMPLOYEE_NAME>\n" +
          "      <xsl:apply-templates select=\"ENAME\"/>\n" +
          "    </EMPLOYEE_NAME>\n" +
          "    <HIRE_DATE>\n" +
          "      <xsl:apply-templates select=\"HIREDATE\"/>\n" +
          "    </HIRE_DATE>\n" +
          "    <JOB_TITLE>\n" +
          "      <xsl:apply-templates select=\"JOB\"/>\n" +
          "    </JOB_TITLE>\n" +
          "    </EMPLOYEE>\n" +
          "  </xsl:template>\n" +
          "</xsl:stylesheet>\n";

        // Create the connection.
        string constr = "User Id=scott;Password=tiger;Data Source=oracle";
        OracleConnection con = new OracleConnection(constr);
        con.Open();

        // Set the date, and timestamp formats for Oracle 9i Release 2, or later.
        // This is just needed for queries.
        if (!con.ServerVersion.StartsWith("9.0") &&
          !con.ServerVersion.StartsWith("8.1"))
        {
          OracleGlobalization sessionParams = con.GetSessionInfo();
          sessionParams.DateFormat = "YYYY-MM-DD\"T\"HH24:MI:SS";
          sessionParams.TimeStampFormat = "YYYY-MM-DD\"T\"HH24:MI:SS.FF3";
          sessionParams.TimeStampTZFormat = "YYYY-MM-DD\"T\"HH24:MI:SS.FF3";
          con.SetSessionInfo(sessionParams);
        }

        // Create the command.
        OracleCommand cmd = new OracleCommand("", con);

        // Set the XML command type to query.
        cmd.XmlCommandType =  OracleXmlCommandType.Query;

        // Set the SQL query.
        cmd.CommandText = "select * from emp e where e.empno = :empno";

        // Set command properties that affect XML query behaviour.
        cmd.BindByName = true;

        // Bind values to the parameters in the SQL query.
        Int32 empNum = 7369;
        cmd.Parameters.Add("empno", OracleDbType.Int32, empNum,
          ParameterDirection.Input);

        // Set the XML query properties.
        cmd.XmlQueryProperties.MaxRows =  1;
        cmd.XmlQueryProperties.RootTag =  "ROWSET";
        cmd.XmlQueryProperties.RowTag =  "ROW";
        cmd.XmlQueryProperties.Xslt =  xslstr;

        // Test query execution without returning a result.
        Console.WriteLine("SQL query: select * from emp e where e.empno = 7369");
        Console.WriteLine("Maximum rows: all rows (-1)");
        Console.WriteLine("Return Value from OracleCommand.ExecuteNonQuery():");
        rows = cmd.ExecuteNonQuery();
        Console.WriteLine(rows);
        Console.WriteLine("\n");

        // Get the XML document as an XmlReader.
        Console.WriteLine("SQL query: select * from emp e where e.empno = 7369");
        Console.WriteLine("Maximum rows: all rows (-1)");
        Console.WriteLine("XML Document from OracleCommand.ExecuteXmlReader():");

        XmlReader xmlReader =  cmd.ExecuteXmlReader();
        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.PreserveWhitespace = true;
        xmlDocument.Load(xmlReader);
        Console.WriteLine(xmlDocument.OuterXml);
        Console.WriteLine("\n");

        // Change the SQL query, and set the maximum number of rows to 2.
        cmd.CommandText = "select * from emp e";
        cmd.Parameters.Clear();
        cmd.XmlQueryProperties.MaxRows =  2;

        // Get the XML document as a Stream.
        Console.WriteLine("SQL query: select * from emp e");
        Console.WriteLine("Maximum rows: 2");
        Console.WriteLine("XML Document from OracleCommand.ExecuteStream():");
        Stream stream = cmd.ExecuteStream();
        sr = new StreamReader(stream, Encoding.Unicode);
        Console.WriteLine(sr.ReadToEnd());
        Console.WriteLine("\n");

        // Get all the rows.
        cmd.XmlQueryProperties.MaxRows =  -1;

        // Append the XML document to an existing Stream.
        Console.WriteLine("SQL query: select * from emp e");
        Console.WriteLine("Maximum rows: all rows (-1)");
        Console.WriteLine("XML Document from OracleCommand.ExecuteToStream():");
        MemoryStream mstream = new MemoryStream(32);
        cmd.ExecuteToStream(mstream);
        mstream.Seek(0, SeekOrigin.Begin);
        sr = new StreamReader(mstream, Encoding.Unicode);
        Console.WriteLine(sr.ReadToEnd());
        Console.WriteLine("\n");

        // Clean up.
        cmd.Dispose();
        con.Close();
        con.Dispose();
      }
    }

関連項目:

- Oracle.DataAccess.ClientおよびOracle.ManagedDataAccess.Clientのネームスペース

- OracleXmlQueryPropertiesメンバー

- OracleXmlQueryPropertiesコンストラクタ

- OracleXmlQueryPropertiesプロパティ

- OracleXmlQueryPropertiesパブリック・メソッド