【发布时间】:2013-04-23 19:29:16
【问题描述】:
我有以下场景:
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 -
在这种情况下为什么要使用 UNION ALL?
-
啊对不起,我误解了参数使用的部分......
标签: asp.net oracle plsql conditional where