Jump to content

SQL funkcijas integrēšana selectā


Murlo
 Share

Recommended Posts

Sveiki!

varbūt kāds var palīdzēt atrisināt problēmu.

No supporta puses ir uztaisīts gatavs packages gethistorychanges

Ar select atlasu vajadzīgos id, kurus ievietojot pa vienam gatavajā gethistorychages, iegūstu vērtības. Viss tik tālu forši, bet ja vajag pārbaudīt 1000 id numurus, tad nav go variants

 

Kā var salikt A selectā iegūtos id numurus ar sekojošu selectu?

select  izmainas_datums, izmainas_iemesls, procesa_numurs, vertiba_pirms, vertiba_pec 
from table(getcitemhistorychanges( cast (id as number)))
where izmainas_iemesls = 'Klienta_lugums

 

Mēģināju uztaisīt dažādi funkciju, bet prāts par īsu. Viens no piemēriem

create or replace function get_izmainas_iemesls (p_in_id in number) return varchar2
is p_out varchar2;

begin 
select 'values' into p_out 
from (table(xxx.contract.getcitemhistorychanges ((select p_in_id from dual) as number)));

return p_out;

end;

 

  • Kādas šausmas! 1
Link to comment
Share on other sites

pirms 2 stundām , Murlo teica:

Ar select atlasu vajadzīgos id, kurus ievietojot pa vienam gatavajā gethistorychages, iegūstu vērtības.

Tieši to pašu ir jādara vajadzīgajā selektā:

select  izmainas_datums, izmainas_iemesls, procesa_numurs, vertiba_pirms, vertiba_pec, getcitemhistorychanges( cast (id as number)) AS history
from table
where izmainas_iemesls = 'Klienta_lugums

 

Link to comment
Share on other sites

funkcija getcitemhistorychanges atgriež laukus izmainas_datums, izmainas_iemesls, procesa_numurs, vertiba_pirms, vertiba_pec ar aizpilditām vērtībām pēc id numura

mēģināju arī pēc tava ieteikuma, rezultāts [1]:(Error): OCI-21700: object does not exist or is marked for delete.

Link to comment
Share on other sites

Nu, ja tā atgriež tabulu, tad funkciju var pievienot selektā ar CROSS APPLY konstrukciju:

 

select  izmainas_datums, izmainas_iemesls, procesa_numurs, vertiba_pirms, vertiba_pec 
from table t
CROSS APPLY getcitemhistorychanges(cast (t.id as number))
where izmainas_iemesls = 'Klienta_lugums

 

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...