PL SQL字符串比较

时间:2017-03-02 11:01:57

标签: oracle plsql

我正在PL / SQL中编写一个过程,我需要检查给定的值是否等于 x y 。我使用以下代码来检查:

IF p_campaignPaymentType != 'per month' || 'per creation' THEN
    RAISE ex_invalidPaymentType;
END IF;

现在,即使p_campaignPaymentType中给出的字符串是“每月”或“每次创建”,它也会引发异常ex_invalidPaymentType。

IF句子有什么问题,和/或我可以做些什么作为检查?

1 个答案:

答案 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; }
}