中の技術日誌
 ホーム / 上へ

SQL Server ストアドプロシージャのreturnを取得する

2005/10/22

この文書はVisual Studio 2005 RC(.NET2.0)をベースに記述されています が、Visual Studio 2003でも利用できます。

SQL ServerのストアドプロシージャはOracleのPL/SQLよりさまざまな面でプログラムと連携しやすくなっています。

SQL Serverのストアドプロシージャからは以下のような構文でreturnによる戻り値を返せます。

CREATE PROCEDURE [存在チェック]
  @id int
AS
BEGIN
  SET NOCOUNT ON;
  if ( @id = 1 )
    return 1
  else
    return 0

end

戻り値を取得する方法は簡単で、パラメータに1つ特殊なパラメータを設定するだけです。

using (SqlCommand com = new SqlCommand())
{
  com.CommandType = System.Data.CommandType.StoredProcedure;
  com.CommandText = "存在チェック";
* com.Parameters.Add("RetValue", System.Data.SqlDbType.Int, 4);
* com.Parameters["RetValue"].Direction = System.Data.ParameterDirection.ReturnValue;
  com.Parameters.Add("@id", System.Data.SqlDbType.Int);
  com.Parameters["@id"].Value = 1;

  com.Connection = this.connection;
  try
  {
    this.connection.Open();
    com.ExecuteNonQuery();
    Assert.AreEqual<int?>(1, (int?)com.Parameters["RetValue"].Value);
  }
  finally
  {
    if (this.connection.State != System.Data.ConnectionState.Closed)
    {
      this.connection.Close();
    }
  }
}

*米印を打っている行がその行です。

ParameterDirection.ReturnValueが味噌になります。

詳しくは以下のKBなども参照してください。

[HOWTO] パラメータ化されたストアド プロシージャを ADO.NET と Visual C# .NET を使って呼び出す方法
http://support.microsoft.com/kb/310070/ja

パラメータ化されたストアド プロシージャを ADO.NET と Visual Basic .NET を使って呼び出す方法
http://support.microsoft.com/kb/308049/ja

[HOWTO] パラメータ化されたストアド プロシージャを ADO.NET と Visual C++ .NET を使って呼び出す方法
http://support.microsoft.com/kb/310071/ja


2006/12/16 大阪勉強会#4 + 忘年会 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告