繁体   English   中英

如何制作动态pl / sql?

[英]How can i make dynamic pl/sql?

我想在参数值中使用类型变量来创建动态pl / sql。

参数值>类型= {'名称+位置','resno','hpno','telno'};

例如,如果我得到了参数值('resno','hpno'),则需要两个组合查询(全部2个并集),因此,这意味着查询数量取决于参数值。

select * from (
--repeatation
select * from
(select a.custnm
     , 'name + place' as vtype
     , a.custnm || '-' || c.pjtcd || '-' || c.dong || '-' || c.ho as con
     , count(a.custid) as nodup 
from   custtable a
     , thng c 
where a.custid = c.custid(+)
group by a.custnm, c.pjtcd, c.dong, c.ho
having count(a.custid) > 1) x
--/repeatation
union all
--repeatation
select * from
(select a.custnm
     , 'resno' as vtype
     , a.resno as condup
     , count(a.custid) as nodup 
from   custtable a
group by a.custnm, a.resno
having count(a.custid) > 1) x2
--repeatation
union all
--repeatation
select * from
(select a.custnm
     , 'hpno' as vtype
     , a.hpno as condup
     , count(a.custid) as nodup 
from   custtable a
group by a.custnm, a.hpno
having count(a.custid) > 1) x3
--repeatation
union all
--repeatation
select * from
(select a.custnm
     , 'telno' as vtype
     , a.telno as condup
     , count(a.custid) as nodup 
from   custtable a
group by a.custnm, a.telno
having count(a.custid) > 1) x4
--repeatation
) 
order by decode(vtype, 'name +`enter code here` place', 1 ,'resno', 2 ,'hpno', 3,  'telno', 4), nodup desc

请让我知道如何用参数值制作plsql

这是一个SELECT语句。 现在的编写方式是SQL,而不是PL / SQL,我的建议是这样 与其编写可怕的PL / SQL(动态SQL通常不是很好),不如不基于该语句创建视图

create or replace view v_my_view as
select * from (
--repeatation
select * from
(select a.custnm
     , 'name + place' as vtype
<snip>

完成后,可在任何需要的地方使用它(包括PL / SQL)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM