Web サービスで呼び出されるストアド プロシージャを使用して SQL Server テーブルを更新しようとしています。ここでは、更新の確認に関して true または false をユーザーに送信できるように、ストアド プロシージャからの戻り値が必要です。
SQL Server テーブルを接続して操作するための言語と ADO.Net アーキテクチャとして C# を使用しています。
私もSQLDataConnection
(System.Data.SqlClient
)を使っています。
Web サービスで呼び出されるストアド プロシージャを使用して SQL Server テーブルを更新しようとしています。ここでは、更新の確認に関して true または false をユーザーに送信できるように、ストアド プロシージャからの戻り値が必要です。
SQL Server テーブルを接続して操作するための言語と ADO.Net アーキテクチャとして C# を使用しています。
私もSQLDataConnection
(System.Data.SqlClient
)を使っています。
ストアド プロシージャは次のように作成できます。
CREATE PROC ReturningProc
AS
BEGIN
IF (@SomeCondition)
SELECT 1
SELECT 0
END
そして、次のように sql コマンド オブジェクトを使用して呼び出すことができます。
object retval = sqlCommand.ExecuteScalar();
結果を読み取るには、SqlDataReader オブジェクトを使用する必要があります。一言で言えば、次のようになります。
var command = new SqlCommand(commandText, sqlConnection);
command.CommandType = CommandType.StoredProcedure;
using(var reader = command.ExecuteReader())
{
while(reader.Read())
{
var result = reader[0];
//Respond to result.
}
}
個人的にはエンティティ フレームワーク (EF) ルートをお勧めします。EF がすべてのコーディングを行ってくれるからです。データベースを指定して、必要なテーブルを選択するだけです。これにより、内部的に SQL クエリに変換される Linq を使用できるようになります。
これに慣れていない場合は、このリンクで強調表示されているデータベース ファースト アプローチをお勧めします。
ストアド プロシージャの使用に固執している場合でも、このリンクとこのリンクで説明されているように、EF を使用してストアド プロシージャを操作できます。
EF をまったく使用せず、データベース処理ロジックを自分で記述したい場合は、このリンクを参照できます。
これがあなたにいくらかの明確さと何かを始めることを願っています.
次のようなプロシージャを作成します。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[Validate]
@b BIT OUT
AS
if(some condition)
SET @b = 1
else
SET @b=0
GO
このようにC#で値を取得します
SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.Bit);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery();
string retunvalue = Convert.ToBoolean(sqlcomm.Parameters["@b"].Value);
ストアド プロシージャを呼び出す前に @b の値を設定すると、SP で例外が発生します。