Tenho uma tabela temporaria com itens que ainda não foram cadastrados na minha tabela de produtos. Preciso enviar um erro no log avisando TODOS os itens que estao faltando. Como o faço?
Eu sei que da maneira abaixo não estah correta (ate porque não estou usando um array). Mas o que eu desejava era colocar no "faltantes" (que seria um array e não um varchar) todos os produtos q existem na minha tabela temporaria. Depois disso, eu verificaria se o array é vazio e, caso não fosse, incluiria no log quais os produtos que devem ser inseridos na tabela de produtos.
DECLARE
faltantes varchar2(10);
sql_statement varchar2(2000);
BEGIN
dbms_output.enable(1000000);
begin
select
produtos
into
faltantes
from
CVSL_APLICACOES_FALTANTES fil;
end;
end;
Existem na verdade N formas de se fazer, como: TEMP TABLE, PL/SQL TABLE etc.
Eu, particularmente sou fã da segunda opção, onde você poderia criar uma função, que retorna um TABLE, com os itens faltantes.
Dá uma olhada, neste tópico interessante do Dr Gori:
Já que os itens estão numa temporária, eu faria da seguinte forma:
* Criaria um SQL que mostra todos os que faltam.
Depois, colocaria esse SQL num cursor e tratava cada item individualmente.
Não sei se você quer inserir um por um numa tabela, ou quer criar um STRING contendo todos que faltam lado a lado e jogar num LOG... Seja qual for a resposta, faria dessa forma. Sem envolver arrays e coisas assim.