我有一个程序,根据参数,where条件会有所不同。 OUT参数必须是INTO子句,以便我可以从过程中返回列。
不是每个if条件都有SQL条件,这样做的有效方法是什么。
答案 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;