おそらく簡単な質問です。私は、この手順を持っている:ストアドプロシージャの戻り値を取得する方法
CREATE PROCEDURE [dbo].[AccountExists]
@UserName nvarchar(16)
AS
IF EXISTS (SELECT Id FROM Account WHERE [email protected])
SELECT 1
ELSE SELECT 0
私は、このプロシージャを呼び出すと、この行いADO.NETコードがある場合:
return Convert.ToBoolean(sproc.ExecuteScalar());
真か偽のどちらかが返されます。
Iの代わりにSELECTの1又は0を返すために、ストアドプロシージャを変更:
ALTER PROCEDURE [dbo].[AccountExists]
@UserName nvarchar(16)
AS
IF EXISTS (SELECT Id FROM Account WHERE [email protected])
RETURN 1
ELSE RETURN 0
sproc.ExecuteScalar()はnullを返します。代わりにsproc.ExecuteNonQuery()を試行すると、-1が返されます。
ADO.NETでRETURNを使用してストアドプロシージャの結果を取得するにはどうすればよいですか?私はAccountExistsは、SELECTの代わりに返す必要が
ので、私は別のストアドプロシージャを持つことができ、それを呼び出す:
--another procedure to insert or update account
DECLARE @exists bit
EXEC @exists = [dbo].[AccountExists] @UserName
IF @exists=1
--update account
ELSE
--insert acocunt
@Chris:被写体はより具体的に編集する必要があります。件名からは、T-SQLとADO.NETとは何の関係もありません。 –
笑、それは意図的ではなかった。私が注目しているのは、私がその主題をタイプしているからです。 – core