Avatar billede dmk Nybegynder
12. november 2003 - 16:10 Der er 1 løsning

TABLE() og CAST()

Jeg har lidt problemer med at få table collections til at virke som jeg gerne vil have. Optimalt vil jeg gerne have noget der ser sådan ud:

type ArrayRecord_t is record (
  targetid    raw(16),
  Hits        integer
);

Type Array_t is table of ArrayRecord_t;

declare
  Ar1 Array_t;
  ArTotal  Array_t;
begin
  select ID, 0
  bulk collect into Ar1
  from SomeTable;
  select ID, 0
  bulk collect into Ar1
  from SomeOtherTable;
 
  select ID, count(ID) Hits
  bulk collect into ArTotal
  from TABLE(CAST(Ar1 as ArrayRecord_t))
  group by ID;
end;


Dette virker ikke af flere grunde:

For det første bliver resultatet i Ar1 overskrevet i nummer 2 BULK COLLECT INTO.

Men mere alvorligt er, at jeg ikke kan finde ud at at behandle min collection som en tabel i den efterfølgende select med TABLE og CAST. Grunden til dette er, at jeg ikke kan gøre det for en collection der består af records. Hvis jeg laver min collection om til at bestå af integers, kan jeg godt bruge den i en select senere, men så har jeg ikke mit HITS med. Jeg har også tænkt over om jeg kan lave det som 2 arrays i stedet (et med hits og et med ID'er), men det tror jeg ikke jeg kan få til at fungere efterfølgende. Det skal helst være i 1 collection, og det skal være records der ligger i det.

Er der nogen der har nogle gode ideer?

/DMK
Avatar billede dmk Nybegynder
19. november 2003 - 15:56 #1
Har fundet løsningen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester