根据输入参数对update sql脚本进行条件处理

时间:2014-04-02 14:41:21

标签: sql oracle sqlplus

我是SQL新手并使用Oracle 11.我需要编写一个sql脚本,该脚本根据输入参数是否为空而使用不同的更新命令。

我需要这样的东西

['&安培;'后面跟参数名称是我看到其他类似参数使用的方式 我们项目的脚本]

IF &PRG_ID IS NULL
   UPDATE PROGRAM_TABLE P SET HANDLED_IND = 'Y' WHERE EXISTS
      (SELECT 1 FROM HANDLED_PROGRAM H WHERE H.PROGRAM_ID = P.PROGRAM_ID);
ELSE
   UPDATE PROGRAM_TABLE P SET HANDLED_IND = 'Y' WHERE 
     P.PROGRAM_ID = &PRG_ID AND EXISTS
       (SELECT 1 FROM HANDLED_PROGRAM H WHERE H.PROGRAM_ID = P.PROGRAM_ID);
END IF;

1 个答案:

答案 0 :(得分:0)

像(未经测试)的东西:

   UPDATE PROGRAM_TABLE P SET HANDLED_IND = 'Y' WHERE EXISTS
      (SELECT 1 FROM HANDLED_PROGRAM H WHERE H.PROGRAM_ID = P.PROGRAM_ID)
      AND (&PRG_ID IS NULL OR P.PROGRAM_ID = &PRG_ID);

但是考虑到这种变化可能会导致PRG_ID具有确定值时的性能下降。