Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Pesquisar dentro do tipo de registros da tabela

declare 
characteristic CLONE_PRODUCT_CHAR_TABLE:=CLONE_PRODUCT_CHAR_TABLE(
      CLONE_PRODUCT_CHAR_RECORD(2,'ZIKA','ZIKA'),
      CLONE_PRODUCT_CHAR_RECORD(3,'MIGO','MIGO'),
      CLONE_PRODUCT_CHAR_RECORD(4,'ZAG','ZAG')
);
char_record CLONE_PRODUCT_CHAR_RECORD;
BEGIN
  for i in 1 .. characteristic.count loop
      if characteristic(i).characteristicID = 3 then
         char_record := characteristic(i);
         exit;
      end if;
  end loop;
  dbms_output.put_line(char_record.newValue);
  dbms_output.put_line(char_record.newValueName);
END;
/

Alternativamente, você pode tentar
declare 
characteristic CLONE_PRODUCT_CHAR_TABLE:=CLONE_PRODUCT_CHAR_TABLE(
      CLONE_PRODUCT_CHAR_RECORD(2,'ZIKA','ZIKA'),
      CLONE_PRODUCT_CHAR_RECORD(3,'MIGO','MIGO'),
      CLONE_PRODUCT_CHAR_RECORD(4,'ZAG','ZAG')
);
char_record CLONE_PRODUCT_CHAR_RECORD;
BEGIN

  select CLONE_PRODUCT_CHAR_RECORD(characteristicID, newvalue, newvaluename)
    into char_record from
   table(characteristic)
   where
      characteristicID = 3;

  dbms_output.put_line(char_record.newValue);
  dbms_output.put_line(char_record.newValueName);
END;
/