Com o Oracle 19c, estou tentando escrever um procedimento armazenado. Cortei muito outro código, mas em sua forma mais simples, preciso executar algum SQL dinâmico e, em seguida, retornar o valor em um registro. O erro que estou recebendo na execução (compila bem) é:
ORA-00932: inconsistent datatypes: expected UDT got CHAR
Meu código é:
create or replace TYPE rep_mapping_object as OBJECT
( REGISTRY_ID varchar2(20 BYTE )
);
CREATE OR REPLACE TYPE rep_mapping_record IS TABLE OF rep_mapping_object;
create or replace PROCEDURE my_test( vROW OUT rep_mapping_record )
IS
mySQL varchar2(2000);
BEGIN
mySQL := 'select registry_id from src_territory_assignment fetch first row only';
execute immediate mySQL into vROW;
END;
Quando isso for resolvido, meu rep_mapping_object terá muito mais colunas, assim como a instrução SQL. A instrução SQL retornará apenas 0 ou 1 linha.
O que estou fazendo errado?
Veja como:
Tipos de amostra e tabela:
Procedimento; veja linhas #5 e 6:
Teste: