ora2pg hat zwei composite type in oracle wie folgt nach postgres migriert…
Ora
-----------------------------
create or replace
TYPE CLASS_MAPPING_TAB IS TABLE OF class_mapping;
create or replace
TYPE CLASS_MAPPING IS OBJECT (
ID NUMBER,
klasse NUMBER,
text VARCHAR2 (500 CHAR)
);
||
\/
Postgres:
-----------------------------
create or replace
TYPE class_mapping_tab AS
class_mapping_tab class_mapping[];
create or replace
TYPE CLASS_MAPPING IS OBJECT (
ID NUMBER,
klasse NUMBER,
text VARCHAR2 (500 CHAR)
);
wie kann ich class_mapping_tab setzen?
es funkt nicht wie folgt
Hallo Kretschemer,
Danke fuer die schnelle Antwort !.. Die Typen sind nach Postgres bereits migriert (das war copy/paste Fehler von mir)
wie setze ich ein Array die in einem composite typ definiert ist?
test=# create type auto as (marke text, type text);
CREATE TYPE
test=*# create table meine_autos(id int, autos auto[]);
CREATE TABLE
test=*#
Das Handling von composite types und auch noch arrays davon ist etwas, ähm, speziell. Google mal, es gibt diverse Leute, die dazu was geschrieben haben.
create table autotbl ( id numeric, marke text, model text);
insert into autotbl(id, marke, type) values (1, 'VW', 'passat');
insert into autotbl(id, marke, type) values (2, 'BMW', '540d');
create or replace function getautos() returns autos as $$
declare mycur CURSOR FOR select marke, model FROM autotbl;
retval autos;
autosArray auto[];
row_auto RECORD;
idx int :=0;
begin
OPEN mycur;
LOOP
FETCH mycur INTO row_auto;
EXIT WHEN NOT FOUND;
autosArray[idx] := row_auto;
idx := idx+1;
END LOOP;
retval.autos := autosArray;
CLOSE mycur;
return retval;
end
$$
LANGUAGE plpgsql