Eu tenho um parâmetro de entrada com este formato '0,1,2,3,4'
, o que eu quero fazer é declarar um array
com tamanho variável (com isso quero dizer que o parâmetro de entrada pode ser como '0,1'
, então o tamanho não é fixo), separar os itens (0,1, 2,3,4) e armazená-los em uma matriz de números. Abaixo você pode ver o que eu fiz até agora:
declare
v_input varchar2(400) := '0,1,2,3,4';
type t_dep2custrel_type is table of number;
t_dep2cust_rel t_dep2custrel_type;
begin
select REGEXP_SUBSTR(v_input, '[^,]+', 1, LEVEL)
into t_dep2cust_rel
from dual
CONNECT BY REGEXP_SUBSTR(v_input, '[^,]+', 1, LEVEL) IS NOT NULL;
end;
e estou recebendo esta mensagem de erro:
"Local collection types not allowed in SQL statements"
Eu queria saber se você poderia me ajudar a encontrar o problema e me dizer se existe uma maneira melhor de fazer isso.
desde já, obrigado
SELECT .. INTO
funciona apenas com consultas que retornam uma única linha e pode coletar apenas tipos escalares. Sua consulta retorna várias linhas eBULK COLLECT INTO
deve ser usada: