私はこれについて何かをすることができたので、SQLサーバーストアドプロシージャ内で条件を指定できます
OUTPUT
変数(PARAMETER)を宣言してから
条件が満たされた場合は値を 1 に設定し、そうでない場合は -1 に設定します
次に、C#で次のように関数を設定します。この例では、出力パラメーターに名前が付けられていますERROR
public static int UpdateTblViaStoredPRoc(string SPname, int UserID)
{
int message = 0;
using (SqlConnection con = new SqlConnection("server=(local);Initial Catalog=****DBNAME HERE***;Integrated Security=True"))
{
con.Open();
SqlCommand cmd = new SqlCommand(SPname, con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Uid", UserID);
cmd.Parameters.Add("@ERROR", SqlDbType.Int);
cmd.Parameters["@ERROR"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
message =(int) cmd.Parameters["@ERROR"].Value;
con.Close();
}
return message;
}
ストアド プロシージャは常に同じパターンに従います
パラメーターを宣言しERROR
、それに応じて ERROR を出力する条件を設定します。
ALTER PROCEDURE [dbo].[nameofProc]
@UId Int, @ERROR int OUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @TimeOtVal varchar(50)
set @TimeOtVal = (SELECT CASE WHEN [TimeOut] IS NULL THEN '' ELSE CONVERT(NVARCHAR,[TimeOut]) END FROM tblTime WHERE tId = ( SELECT MAX(tId) FROM tblTime WHERE UserId = @UId))
IF (@TimeOtVal = '') -- condition for the update
BEGIN -- now action is taken if condition is met
SET NOCOUNT ON;
UPDATE tblTime SET TimeOut = DATEADD(HOUR,8,TimeIn) WHERE tId = ( SELECT MAX(tId) FROM tblTime WHERE UserId = @UId)
SET @ERROR = 1
END
else
BEGIN -- Other wise , if condition isnot met
SET @ERROR = -1
END
END
そのため、条件によって許可されている場合にのみ、必要なことを実行し、アクションを報告して、プログラムのコード ビハインドで処理できるようにします。