我已经设法对此做了一些事情,所以我可以在 sql server 存储过程中指定一个条件
然后声明一个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
参数,设置条件以相应地输出错误:
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
因此,只有在条件允许时它才会执行您想要的操作,然后报告操作,以便您可以在后面的程序代码中处理它。