2017-02-04 46 views
0

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

而不是每个条件都有SQL条件,这样做的有效方式是什么?

+0

也许GurV是要发布一些不同的查询,而不是只有一个 – Massimo

+0

我没有将我所有的IN参数@GurV,也有参数约10。所以会有更多的条件。 – user75ponic

回答

2

它在我看来更像一个设计问题。 所以这取决于你需要达到什么以及你想如何组织你的代码。

可能性

1-你的“如果”中相同的操作的查询链为每个查询

2-一个过程 - 如果“其中的”份之间的differencies不这么大的使用SQL构造,包括工会,情况和\或等,让在一个查询并存不同的情况

4-构建SQL动态和使用执行即时

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

编辑

使用动态SQL,对失控的结果,你可以做

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

如果您对查询输入参数,可以,你必须将它们与马克:然后添加使用条款与适当的输入参数。

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

如果我正在使用EXCUTE IMMEDIATE,如何将值分配给OUT参数。 – user75ponic

+1

EXECUTE IMMEDIATE sql_stmt INTO var1,var2; – Massimo

+0

请参阅我在编辑答案中有关动态sql的其他解释 – Massimo