0

Web サービスで呼び出されるストアド プロシージャを使用して SQL Server テーブルを更新しようとしています。ここでは、更新の確認に関して true または false をユーザーに送信できるように、ストアド プロシージャからの戻り値が必要です。

SQL Server テーブルを接続して操作するための言語と ADO.Net アーキテクチャとして C# を使用しています。

私もSQLDataConnectionSystem.Data.SqlClient)を使っています。

4

4 に答える 4

1

ストアド プロシージャは次のように作成できます。

CREATE PROC ReturningProc
AS
BEGIN
IF (@SomeCondition)
      SELECT 1

SELECT 0
END

そして、次のように sql コマンド オブジェクトを使用して呼び出すことができます。

object retval = sqlCommand.ExecuteScalar();
于 2013-02-22T09:05:10.940 に答える
0

結果を読み取るには、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.
}
}
于 2013-02-22T09:07:32.997 に答える
0

個人的にはエンティティ フレームワーク (EF) ルートをお勧めします。EF がすべてのコーディングを行ってくれるからです。データベースを指定して、必要なテーブルを選択するだけです。これにより、内部的に SQL クエリに変換される Linq を使用できるようになります。

これに慣れていない場合は、このリンクで強調表示されているデータベース ファースト アプローチをお勧めします。

ストアド プロシージャの使用に固執している場合でも、このリンクとこのリンクで説明されているように、EF を使用してストアド プロシージャを操作できます。

EF をまったく使用せず、データベース処理ロジックを自分で記述したい場合は、このリンクを参照できます。

これがあなたにいくらかの明確さと何かを始めることを願っています.

于 2013-02-22T09:19:34.977 に答える
0

次のようなプロシージャを作成します。

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 で例外が発生します。

于 2013-02-22T09:25:01.740 に答える