Update w PL/SQL

0

Witam

Mam pewien problem z prostym update'm.

mam 2 tabele

  1. inventory_part_tab (part_no,part_product_family)
  2. z_zmiana_rodzin (indeks,rodzina)

w tabeli inventory_part_tab chce zmodyfikowac wartosc z pola part_product_family zastepujac ja wartoscia z tabeli z_zmiana_rodzin z pola rodzina. Oczywiscie laczymy tabele po part_no = indeks. Warunek jest taki, żeby nie zamieniać gdy rodzina = 0 i rodzina = null.

DECLARE v_rodzina VARCHAR(50);
CURSOR c_data IS
select distinct inv.part_no from inventory_part_tab inv , z_zmiana_rodzin zmi where inv.part_no = zmi.indeks ;
c_val c_data%ROWTYPE;
BEGIN
OPEN C_data;
LOOP
FETCH C_DATA INTO C_VAL;
EXIT WHEN C_DATA%NOTFOUND;
BEGIN

SELECT MAX(rodzina)
INTO v_rodzina
FROM z_zmiana_rodzin WHERE indeks = c_val.part_no;
UPDATE inventory_part_tab
SET part_product_family = v_rodzina
WHERE part_no = c_val.part_no and rodzina is not null and rodzina <>0 ;
END;
END LOOP;
CLOSE C_data ;

Dobrze rozumuję?

0
UPDATE inventory_part_tab 
SET part_product_family = r.rodzina
FROM z_zmiana_rodzin r
WHERE r.indeks = inventory_part_tab.part_no AND r.rodzina <> 0 AND r.rodzina IS NOT NULL
0
hes napisał(a)
UPDATE inventory_part_tab 
SET part_product_family = r.rodzina
FROM z_zmiana_rodzin r
WHERE r.indeks = inventory_part_tab.part_no AND r.rodzina <> 0 AND r.rodzina IS NOT NULL

w oracle o ile sie nie myle nie działa from po updacie w takiej formie.

jeśli już można spróbowac coś w tym stylu:
http://geekswithblogs.net/WillSmith/archive/2009/10/22/oracle-update-with-join-ndash-revisited.aspx

ewentualnie w kursorze dodac "for update"

1 użytkowników online, w tym zalogowanych: 0, gości: 1