程序 - 动态条件

时间:2017-02-04 08:37:50

标签: sql oracle stored-procedures oracle11g

我有一个程序,根据参数,where条件会有所不同。 OUT参数必须是INTO子句,以便我可以从过程中返回列。

不是每个if条件都有SQL条件,这样做的有效方法是什么。

1 个答案:

答案 0 :(得分:2)

在我看来,更像是一个设计问题。 因此,这取决于您需要实现的目标以及您希望如何组织代码。

可能性

1-你的"如果"同一程序中的查询链

每个查询的一个程序

3 - 如果"其中"之间存在差异。部件不是那么大使用sql构造,包括联合,案例和\或等让一个查询中共存不同的案例

4-动态构建sql并使用execute immediate

通常我不喜欢1,我会尝试3或4,如果我不能继续2,

修改

使用动态sql,你可以做结果

   EXECUTE IMMEDIATE stmt into o_total_count,o_total_sum,o_hold_status,o_normal_status;

如果您有查询的输入参数,则必须使用:标记它们,然后使用相应的输入参数添加USING子句。

实施例

       EXECUTE IMMEDIATE 'select count(*) from departments where department_id=:id' INTO l_cnt USING l_dept_id;