Varför måste du ha en variabel? Kan du inte bara göra
delete from t1
where c in
(Select id
from t2
where status=12)
4 svar · 590 visningar · startad av b3rra
Hej,
jag sitter på en oracle datbas och skriver lite PL/SQL
skulle behöva hjälp med att få till följande:
variable_sql varchar2(11000) := Select id from table where status=12
DELETE FROM table WHERE column in (variable_sql)
column är numerisk och resultatet förväntas bli 78,89,67 osv.
Hur får jag till det?
Varför måste du ha en variabel? Kan du inte bara göra
delete from t1
where c in
(Select id
from t2
where status=12)
Hel sant,
men det rör sig om en lång SQL i in-satsen som byts ut med jämna mellanrum.
Samtidigt som den rör ett 60 tal tabeller(samma sql behöver kopieras in i ca 60 delete satser).
Så jag skulle vilja slippa att uppdatera på flera ställen.
// B3rra
Ok, då får du använda någon lämplig cursor-loop och bygga ihop en lista med id-värden och sedan göra lite dynamisk sql.
declare
cursor c8 is
select id from t2;
declare ids varchar(3000);
for r in c8 loop
ids := coalesce(ids || ',','') || r.id;
end loop;
if ids is not null then
execute immediate 'delete from t where id in (' || ids || ')';
end if;
Ovanstående är helt otestat men kanske är till någon hjälp i alla fall.