Slozene typy v PL/pgSQL

Lukáš Vadinský lukin na pef.czu.cz
Čtvrtek Červen 30 13:59:01 CEST 2005


Ahoj,

mohl byste mi nekdo, prosim, poradit s nasledujici funkci?

CREATE OR REPLACE FUNCTION copy()
 RETURNS void AS $$
DECLARE
   var_row RECORD;
BEGIN
   FOR var_row IN SELECT * FROM table1 LOOP
      UPDATE table2 SET table2_atribY = var_row.table1_atribX WHERE table2_pk = var_row.table1_pk;
   END LOOP;
   RETURN void;
END;
$$ LANGUAGE plpgsql;

Tato funkce postupne nacita vsechny hodnoty 'table1_atribX' z tabulky 'table1' a updatuje jimi hodnoty 'table2_atribY' z tabulky 'table2' pri vzajemne rovnosti primarnich klicu 'table2_pk = table1_pk'.
Chtel bych tu funci dynamizovat tak, aby bylo mozne poslat ji jmeno zdrojove tabulky 'table1', nazev atributu 'table1_atribX' a cilovy atribut 'table2_atribY' jako parametry. (cilova tabulka 'table2' je nemenna) Hlavicka funkce by tedy vypadala nasledovne:
copy(var_table1 varchar, var_table1_atribX varchar, var_table2_atribY varchar)
Ja jsem neprisel na to, jak mohu ve funkci pouzit zapis typu: $1.$2 (promenna1.promenna2), abych tim nahradil var_row.table1_atribX za var_row.var_table1_atribX.

Nevite nekdo? 

Predem diky za odpovedi, Lukas V. ;-)


Další informace o konferenci Test