即时通讯尝试为我的预订应用程序创建一个存储过程,该应用程序检查当前假期的状态,然后决定在存储过程运行后要将状态更改为何种情况,这是我的代码,我试图绘制来自Holidays表的状态,但我不知道如何处理,而不是通过它传递它,虽然我的HTML连接,不会因其他原因工作。如何在存储过程中将变量设置为另一个表中的值?
这是我的SQL存储过程到现在为止,如果我可以从假期表中获取状态,我可以完成它,它会正常工作:(我对SQL很新,所以不要尝试过于复杂谢谢:))
CREATE PROCEDURE [dbo].[spHolidayApproveOrDecline]
(
@JobRole INT,
@HolidayID INT,
@Status varchar
)
AS
BEGIN
SET @Status AS
(这是我需要设置 从假日表的值状态!!!!)
IF @JobRole = '1003'
BEGIN
SELECT * FROM Holidays WHERE @HolidayID = Holidays.ID
IF @Status = 'Pending'
BEGIN
UPDATE Holidays
SET Status = 'ManagerAcc'
WHERE @HolidayID = Holidays.ID
AND Status = 'Pending'
END
IF @Status = 'AdminAcc'
BEGIN
UPDATE Holidays
SET Status = 'Accepted'
WHERE @HolidayID = Holidays.ID
AND Status = 'AdminAcc'
END
END
IF @JobRole = '1002'
BEGIN
SELECT * FROM Holidays WHERE @HolidayID = Holidays.ID
IF @Status = 'Pending'
BEGIN
UPDATE Holidays
SET Status = 'AdminAcc'
WHERE @HolidayID = Holidays.ID
AND Status = 'Pending'
END
IF @Status = 'ManagerAcc'
BEGIN
UPDATE Holidays
SET Status = 'Accepted'
WHERE @HolidayID = Holidays.ID
AND Status = 'ManagerAcc'
END
END
END
即使你*想*你的'@ Status'参数的长度为1,我怀疑在这种情况下,通常最好为所有'varchar'声明包含一个显式长度后来的读者,你想要'varchar(1)')。然而,在这种情况下,我认为这是一个错误,你不希望它的长度为1,因为比较如'@Status ='ManagerAcc''。 –