如何从数据库表(ORACLE)中获取“IF STATEMENT”条件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从数据库表(ORACLE)中获取“IF STATEMENT”条件?相关的知识,希望对你有一定的参考价值。

例如:我需要使用以下代码计算员工评级:

IF POINTS > 150 AND EMP_Experience > 3 THEN 5;

我希望将来可以配置If条件,因此希望将它存储在数据库中。

TABLE EMP_CALC_MASTER

ID   |    Rating     |   Condition                                           

1    |     5         |   %POINTS% > 150 AND %EMP_Experience% > 3       

在我的存储过程中,我想获取上述条件并将%Points%和%Emp_Experience%替换为数据,然后分配评级,该评级也存储在表格中。

v_condition = condition.replace(CALC_MASTER.Condition, %POINTS%, <points of the employee>)

IF v_condition THEN    -- This statement is not understood by Oracle as a valid condition
   ...
END IF
答案

Oracle在SQL中没有IF语句,但您可以使用CASE执行相同的操作。

你还没有说过你希望它可以配置到什么程度或你的实际表格是什么样的,所以这里很难明确。 Oracle不能拥有动态表或列。

您可以为每个条件添加一列,例如

rating    points   emp_experience
5         150      3

然后,内部连接到您的基表并在select中有一个子句

CASE WHEN emp.points > emp_calc_master.points AND 
    emp.emp_experience > emp_calc_master.emp_experience 
    THEN emp_calc_master.rating ELSE NULL END

但我猜你想在emp_calc_master中有多个可能的行。

老实说,这已经变得足够复杂,我可能会创建一个PL / SQL函数来进行计算并从查询中调用它。

以上是关于如何从数据库表(ORACLE)中获取“IF STATEMENT”条件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从oracle中的多个表中获取值,包括日期

如何从多个表 Oracle 中获取最后两个最大日期

如何从两个表中获取公共项目 - Oracle

如何使用oracle程序将数据从多个表中插入一个表中

oracle 11g resultSet如何获取表名

如何从Oracle数据库中的表中获取列名(字段名)列表?