Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere .NET データ・プロバイダ

 

ストアド・プロシージャの使用

.NET データ・プロバイダとともにストアド・プロシージャを使用できます。ExecuteReader メソッドを使用して、結果セットを返すストアド・プロシージャを呼び出します。また、ExecuteNonQuery メソッドを使用して、結果セットを返さないストアド・プロシージャを呼び出します。ExecuteScalar メソッドを使用して、単一値のみを返すストアド・プロシージャを呼び出します。

ストアド・プロシージャを呼び出すには、SAParameter オブジェクトを作成します。次のように、疑問符をパラメータのプレースホルダとして使用します。

sp_producttype( ?, ? )

Parameter オブジェクトの詳細については、SAParameter クラスを参照してください。

♦  ストアド・プロシージャを実行するには、次の手順に従います。
  1. SAConnection オブジェクトを宣言して初期化します。

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 11 Demo" );
  2. 接続を開きます。

    conn.Open();
  3. SQL 文を定義して実行する SACommand オブジェクトを追加します。次のコードは、文をストアド・プロシージャとして識別する CommandType プロパティを使用します。

    SACommand cmd = new SACommand( "ShowProductInfo",
        conn );
    cmd.CommandType = CommandType.StoredProcedure;

    CommandType を指定しない場合、次のように、疑問符をパラメータのプレースホルダとして使用します。

    SACommand cmd = new SACommand(
        "call ShowProductInfo(?)", conn );
    cmd.CommandType = CommandType.Text;
  4. ストアド・プロシージャのパラメータを定義する SAParameter オブジェクトを追加します。ストアド・プロシージャに必要なパラメータごとに新しい SAParameter オブジェクトを作成してください。

    SAParameter param = cmd.CreateParameter();
    param.SADbType = SADbType.Int32;
    param.Direction = ParameterDirection.Input;
    param.Value = 301;
    cmd.Parameters.Add( param );

    Parameter オブジェクトの詳細については、SAParameter クラスを参照してください。

  5. DataReader オブジェクトを返す ExecuteReader メソッドを呼び出します。Get メソッドを使用して、指定したデータ型で結果を返します。

    SADataReader reader = cmd.ExecuteReader();
    reader.Read();
    int ID = reader.GetInt32(0);
    string name = reader.GetString(1);
    string descrip = reader.GetString(2);
    decimal price = reader.GetDecimal(6); 
  6. SADataReader オブジェクトと SAConnection オブジェクトを閉じます。

    reader.Close();
    conn.Close();
ストアド・プロシージャを呼び出す別の方法

前述の手順 3 の説明は、ストアド・プロシージャを呼び出すための 2 つの方法を示します。Parameter オブジェクトを使用しないでストアド・プロシージャを呼び出すためのもう 1 つの方法は、次のように、ソース・コードからストアド・プロシージャを呼び出す方法です。

SACommand cmd = new SACommand(
    "call ShowProductInfo( 301 )", conn );

結果セットまたは単一値を返すストアド・プロシージャを呼び出す方法の詳細については、SACommand オブジェクトを使用したデータの取得を参照してください。

結果セットを返さないストアド・プロシージャを呼び出す方法の詳細については、SACommand オブジェクトを使用したローの挿入、更新、削除を参照してください。