Estou pela primeira vez utilizando recurso de SQL dinamico, porem enfrentando erros podem me ajudar?
Preciso popular uma tabela de controle com um valor maximo de um campo chamado EXECID. Todas as tabelas de meu schema possui este campo. já populei esta tabela de controle com os nomes das tabelas, porem agora estou desenvolvendo procedure que atualiza o valor maximo deste controle para cada tabela.
CREATE OR REPLACE PROCEDURE PRC_EXECID_CONTROL
IS
vSQL_m VARCHAR2(4000);
vSQL_c VARCHAR2(4000);
vMAX NUMBER;
BEGIN
FOR x IN (SELECT TABLE_NAME FROM EXECID_CONTROL) LOOP
vSQL_m := 'SELECT MAX(EXECID) INTO vMAX FROM ' || x.TABLE_NAME || ';';
EXECUTE IMMEDIATE vSQL_m ;
vSQL_c := 'UPDATE RUNID_CONTROL RC SET RC.MAX_RUNID = vMAX WHERE RC.TABLE_NAME = ' || x.TABLE_NAME || ';';
EXECUTE IMMEDIATE vSQL_c ;
END LOOP;
COMMIT;
END PRC_RUNID_CONTROL;
Relatório de erro:
ORA-00911: caractere inválido
ORA-06512: em "xxxxx.PRC_EXEC_ID_CONTROL", line 17
ORA-06512: em line 1
00911. 00000 - "invalid character"
*Cause: identifiers may not start with any ASCII character other than
letters and numbers. $#_ are also allowed after the first
character. Identifiers enclosed by doublequotes may contain
any character other than a doublequote. Alternative quotes
(q'#...#') cannot use spaces, tabs, or carriage returns as
delimiters. For all other contexts, consult the SQL Language
Reference Manual.
*Action: