使用with解决传入入参可变的问题
多入参问题在选择入参时,入参数量可变,一般是通过动态SQL拼写where语句实现,这种方式即不安全,可读性又差,我们可以借助Oracle 的with语句和table函数来实现可变入参的功能。
|
-- Created on 2008-03-19 by ADMINISTRATOR
declare -- Local variables here i integer; v_tab insu_table; begin select '31' bulk collect into v_tab from dual; p1(v_tab); end; |
|
create or replace type insu_table is table of varchar2(3);
CREATE OR REPLACE PROCEDURE p1(p_tab insu_table) IS v_a VARCHAR2(20); BEGIN WITH data AS( SELECT * FROM TABLE(p_tab)) SELECT aab001 INTO v_a FROM ab15 WHERE aae140 IN (SELECT * FROM data) AND rownum = 1; END; |
通过with语句,将险种虚拟为数据集,在select中作为表访问即可。
本文介绍了一种使用Oracle的WITH语句和TABLE函数来处理SQL查询中可变数量参数的方法,这种方法可以提高代码的安全性和可读性。
405

被折叠的 条评论
为什么被折叠?



