sql >> Databáze >  >> RDS >> Oracle

Jak mohu vybrat typ hromadné shromážděné tabulky záznamů

Váš problém je ve skutečnosti chyba PLS-00642, spíše než ORA-22905. V zásadě nemůžete používat místní typy kolekcí v příkazech SQL. Řešením je proto definovat typy na úrovni schématu. Při definování typů tímto způsobem nemůžeme použít syntaxi %TYPE a místo toho musíme explicitně definovat sloupec (Při vytváření typu v oracle se zobrazuje chyba PLS-00201 ), tj.

create or replace type rec_type as object (
  COLUMN_1 integer,
  COLUMN_2 varchar2(128)
);

create or replace type tab_type as table of rec_type;

Poté musíte explicitně převést hodnoty na relevantní typ, abyste mohli provést hromadné shromažďování, jak je uvedeno zde:ORA-00947 Při globální deklaraci typu není dostatek hodnot .

Váš postup by tedy vypadal asi takto:

PROCEDURE MYPROC((PARAMS))AS
  TABLE_1 TAB_TYPE;
  lCount  integer;
BEGIN

  SELECT  REC_TYPE(COLUMN_A, COLUMN_B)
  BULK COLLECT INTO TABLE_1 
  FROM  TABLE_A;

  SELECT COUNT(*) INTO lCount FROM TABLE(TABLE_1);
END MYPROC;



  1. Upozornění:Neplatný argument zadaný pro foreach() in

  2. Je možné vynutit kontrolu dat v MySQL pomocí regulárního výrazu

  3. Jak opravit jednořádkový poddotaz Ora-01427 vrací více než jeden řádek ve výběru?

  4. Je možné ukládat obrázky, zvuky, videa do SQL databáze?