我再次使用一些 PLSql..
我想知道,是否有任何方法可以像选择一样使用以下函数,而不必将其转换为函数或过程(这样我就可以从包含它的脚本中看到代码)。
代码如下:
DECLARE
outpt VARCHAR2(1000) := '';
flow_rI VARCHAR2(50);
CURSOR flow_r IS
select flow_run_id
from table
where CREATED_DATE < sysdate - 32
and rownum < 10
order by 1 desc;
BEGIN
OPEN flow_r;
LOOP
FETCH flow_r INTO flow_rI;
EXIT WHEN flow_r%notfound;
BEGIN
outpt := outpt || ',' || flow_rI;
EXCEPTION
WHEN no_data_found THEN
dbms_output.Put_line(outpt);
END;
END LOOP;
dbms_output.Put_line(outpt);
outpt := '';
CLOSE flow_r;
END;
想法很简单,我只是想从我的代码中获取一系列代码table
但结果格式如下"1234,2434,424,45,767,43"
之类的东西,而不是查询的表结果。稍后它将在代码中用于各种目的,包括另一个查询,我可以在其中简单地执行in ([variable with that string])
.
事情是,使用dbms_output.Put_line(outpt);
,我无法从应用程序层访问它,并且似乎在 plsql 中我无法使用return
而不把它变成一个函数。
有人有想法吗?它不需要是这样的 PlSql,只要我可以在脚本中包含整个代码即可。
thanks!
f.
为什么不只使用 sql:
SELECT MAX(ltrim(sys_connect_by_path(flow_run_id, ','), ','))
FROM
(
select flow_run_id, rownum rn
from table
where CREATED_DATE < sysdate - 32
and rownum < 10
order by 1 desc
)
START WITH rn = 1
CONNECT BY PRIOR rn = rn - 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)