我有以下情形:PL/SQL:有條件的地方
CREATE OR REPLACE PROCEDURE GETINBOX
(
inHasAttachments IN int
)
AS
BEGIN
SELECT M.MailId,
M.SenderId,
E.Emp_Name As "Sender",
MI.RecipientId,
M.Subject
FROM MAIL M INNER JOIN MAILINBOX MI ON M.MailId = MI.MailId
WHERE MI.RecipientId = '547' AND
M.NotificationSelected = 'Y'
IF inHasAttachments = '1' THEN
AND M.Attachments = 'Y'
END IF;
END GETINBOX;
是否可以根據參數的值條件添加到where子句?
WHERE MI.RecipientId = '547' AND
M.NotificationSelected = 'Y'
IF inHasAttachments = '1' THEN
AND M.Attachments = 'Y'
END IF;
顯然這是不被允許的,但是有可能在PL/SQL中以某種方式做到這一點? 我知道一種方法是複製查詢並根據參數的值執行不同的查詢,但我不想複製我的代碼。
如果WHERE子句是唯一的區別,那麼爲什麼不'UNION ALL' – tyh 2013-04-23 19:32:38
爲什麼大家在這種情況下是指由工會嗎? – 2013-04-23 19:33:42
啊對不起,我錯誤地解釋了參數的使用部分... – tyh 2013-04-23 19:37:43