即時通訊嘗試爲我的預訂應用程序創建一個存儲過程,該應用程序檢查當前假期的狀態,然後決定在存儲過程運行後要將狀態更改爲何種情況,這是我的代碼,我試圖繪製來自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''。 –