-2

こんにちは、ストアド プロシージャの結果を真偽値として bool 変数に格納することはできますか? 何かのようなもの:

1)

bool var = ExecuteScalar("sp_name", parameters);

また

2)

bool var = ClassName.getValue(parameters);

getValue() は、次のコードを持つメソッドです。

return dataBase.ExecuteDataSet("sp_name", parameters);

顧客がカードを持っているかどうかを知りたい。基本的に上記の2番目のオプションである現在持っているものを使用して、行数が0より大きいかどうかの条件を作成することを考えていました。しかし、他に使用できる方法があるかどうかも知りたいです。

前もって感謝します。

4

3 に答える 3

1

あなたは簡単に行うことができます:

DataSet ds = dataBase.ExecuteDataSet("sp_name", parameters);
return ds.Tables[0].Rows.Count>0; //true if record found; false if no rows

proc が where 句のパラメータを使用して単純に選択を行っていると仮定します。何かのようなもの:

select col1 from table a where condition=@parameter
于 2012-12-19T18:51:26.657 に答える
1

使用している DBMS はわかりません。たとえば、SQL Server にはboolデータ型がありませんが、sproc に を返させることができますint。たとえば、ゼロ以外をテストできます。

bool result = ((int) ExecuteScalar("sp_name", parameters)) != 0;

bit注: 私はこれをテストしていませんが、代わりにsproc が a を返すようにしてみてください。SQL Server に関する限り、これは依然として整数値ですが、ADO.NET はそれを検出し、自動的にキャストする必要boolがあります。それは確かに sproc パラメータの場合です。

于 2012-12-19T18:50:10.667 に答える
0

ExecuteScalarはオブジェクトを返します。いいえ、上記の#1はエラーをスローします。ストアド プロシージャが true/false に変換できる値を返すと仮定すると、次のようにする必要があります。

bool var;
bool.TryParse(ExecuteScalar("sp_name", paramaters).ToString(), out var);
于 2012-12-19T18:48:27.567 に答える