我有一个存储过程。我正在传递一个布尔值,例如IS_ELIGIBLE。 现在我希望能够写出查询是这样的:Oracle CASE声明?
SELECT col1,
CASE
WHEN IS_ELIGIBLE THEN col2 * 100
ELSE
col2 * 50
END
INTO OUT_COL1, OUT_SCORE
FROM TABLE_NAME
的问题是,因为IS_ELIGIBLE不TABLE_NAME列之一,查询错误的。我可以使用if..else ie编写相同的查询。
IF IS_ELIGIBLE
SELECT col1, col2 * 100
ELSE
SELECT col1, col2 * 50
END
但我会重复选择语句两次。我知道我可以创建函数来获得该选择语句,以便我不必重复两次。但我只是好奇,如果它可以做,而不做如果..使用或创建新的功能? 谢谢。