create table card_hdr as
select 1 card_id, 'c1' card_name, 'Y' card_type from DUAL
union all
select 2 card_id, 'c2' card_name, 'Y' card_type from DUAL
union all
select 3 card_id, 'c3' card_name, 'N' card_type from DUAL
union all
select 4 card_id, 'c4' card_name, 'N' card_type from DUAL
union all
select 5 card_id, 'c5' card_name, 'Y' card_type from DUAL
union all
select 6 card_id, 'c6' card_name, 'N' card_type from DUAL;


create table card_det as
select 1 card_id, 100 loc_id, 'A' stat from DUAL
union all
select 1 card_id, 200 loc_id, 'A' stat from DUAL
union all
select 1 card_id, 300 loc_id, 'A' stat from DUAL
union all
select 2 card_id, 100 loc_id, 'A' stat from DUAL
union all
select 2 card_id, 200 loc_id, 'A' stat from DUAL
union all
select 2 card_id, 300 loc_id, 'A' stat from DUAL
union all
select 2 card_id, 400 loc_id, 'A' stat from DUAL
union all
select 2 card_id, 500 loc_id, 'A' stat from DUAL
union all
select 2 card_id, 600 loc_id, 'A' stat from DUAL
union all
select 5 card_id, 100 loc_id, 'A' stat from DUAL
union all
select 5 card_id, 200 loc_id, 'A' stat from DUAL;

var csv varchar2(65)
exec :csv := '100,200,300'

select *
  from card_hdr
 where card_id not in (select ch.card_id
                         from card_hdr ch
                              cross join
                              (select EXTRACTVALUE (value (d), '/g') as rslt
                                 from table
                                         (XMLSEQUENCE
                                             (extract
                                                 (xmltype.createxml
                                                                (
'<row><g>'
                                                                 || replace

(:csv,

 ',',

 '</g><g>')
                                                                 ||
'</g></row>'),
                                                  '/row/g'))) d) x
                              left outer join card_det cd
                              on ch.card_id = cd.card_id and cd.loc_id =
rslt
                        where ch.card_type != 'N' and loc_id is null);

--------This is one way.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to Oracle-PLSQL@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to