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

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

前 | 次 |

# ExecuteNonQuery

このメソッドでは、`XmlCommandType`プロパティおよび`CommandText`プロパティを使用してSQL文またはコマンドを実行し、影響を受ける行数を戻します。

宣言

    // C#
    public override int ExecuteNonQuery();

戻り値

影響を受ける行数

実装

`IDbCommand`

例外

`InvalidOperationException` - コマンドを実行できない場合

備考

`ExecuteNonQuery`では、次の場合に影響を受ける行数を戻します。

- コマンドが、`UPDATE`、`INSERT`または`DELETE`で、`XmlCommandType`プロパティが`OracleXmlCommandType.None`に設定されている場合。

- `XmlCommandType`プロパティが、`OracleXmlCommandType.Insert`、`OracleXmlCommandType.Update`、`OracleXmlCommandType.Delete`に設定されている場合。

その他のすべての文のタイプに対する戻り値は`-1`です。

`ExecuteNonQuery`は次のいずれかに対して使用されます。

- カタログ操作(データベース構造の問合せまたは表などのデータベース・オブジェクトの作成など)。

- `UPDATE`、`INSERT`または`DELETE`文の実行による、`DataSet`を使用しないデータベース内のデータ変更。

- XML文書を使用したデータベース内のデータ変更。

`ExecuteNonQuery`では、行を戻しませんが、任意の出力パラメータを移入したりまたはパラメータにマップされる値のデータを戻します。

`XmlCommandType`プロパティが`OracleXmlCommandType.Query`に設定されている場合、`ExecuteNonQuery`は`CommandText`プロパティ内の選択文を実行し、成功した場合`-1`を戻します。生成されるXML文書は廃棄されます。これは、結果としてXML文書を戻さないで操作が正常に完了するかどうかを判別する場合に便利です。

`XmlCommandType`プロパティが、`OracleXmlCommandType.Insert`、`OracleXmlCommandType.Update`または、`OracleXmlCommandType.Delete`に設定されている場合、`CommandText`プロパティの値はXML文書です。`ExecuteNonQuery`では、そのXML文書の変更を`XmlSaveProperties`プロパティで指定されている表またはビューに保存します。戻り値はXML文書で処理された行数です。また、XML文書の各行もデータベース内の複数行に影響を与える可能性がありますが、この場合も戻り値はXML文書の行数です。

例

    // C#

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

    class ExecuteNonQuerySample
    {
      static void Main()
      {
        string constr = "User Id=scott;Password=tiger;Data Source=oracle";
        OracleConnection con = new OracleConnection(constr);
        con.Open();

        OracleCommand cmd = new OracleCommand(
          "select sal from emp where empno=7934", con);

        object sal = cmd.ExecuteScalar();
        Console.WriteLine("Employee sal before update: " + sal);

        cmd.CommandText = "update emp set sal = sal + .01 where empno=7934";

        // Auto-commit changes
        int rowsUpdated = cmd.ExecuteNonQuery();

        if (rowsUpdated > 0)
        {
          cmd.CommandText = "select sal from emp where empno=7934";
          sal = cmd.ExecuteScalar();
          Console.WriteLine("Employee sal after update: " + sal);
        }

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

要件

XMLをサポートするために、このメソッドではデータベースにOracle9i XML Developer's Kits(Oracle XDK)以降をインストールする必要があります。Oracle XDKはOracle Technology Network(OTN)からダウンロードできます。

関連項目:

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

- OracleCommandクラス

- OracleCommandメンバー

- `http://www.oracle.com/technetwork/index.html`