我正在PL / SQL中编写一个过程,我需要检查给定的值是否等于 x 或 y 。我使用以下代码来检查:
IF p_campaignPaymentType != 'per month' || 'per creation' THEN
RAISE ex_invalidPaymentType;
END IF;
现在,即使p_campaignPaymentType中给出的字符串是“每月”或“每次创建”,它也会引发异常ex_invalidPaymentType。
IF句子有什么问题,和/或我可以做些什么作为检查?
答案 0 :(得分:3)
IF p_campaignPaymentType != 'per monthper creation' THEN
RAISE ex_invalidPaymentType;
END IF;
是字符串连接运算符,而不是我认为你假设它的逻辑或运算符。因此,您的代码段实际上意味着:
or
但即使它是逻辑'per month'
运算符,它仍然是错误的,因为任何字符串都不等于'per creation'
或'per month'
(例如'per creation'
}不等于and
)。相反,您应该使用逻辑IF p_campaignPaymentType != 'per month' AND
p_campaignPaymentType != 'per creation' THEN
RAISE ex_invalidPaymentType;
END IF;
运算符:
not in
或者,更优雅的是IF p_campaignPaymentType NOT IN ('per month', 'per creation') THEN
RAISE ex_invalidPaymentType;
END IF;
运算符:
public class GroupViewModel
{
public IEnumerable<SelectListItem> Schedules { get; set; }
public int ScheduleId { get; set; }
public IEnumerable<SelectListItem> Labs { get; set; }
public int LabId { get; set; }
public IEnumerable<SelectListItem> Terms { get; set; }
public int TermId { get; set; }
}