UPSERT na tabela com o nome da tabela dinâmica
Qualquer método melhor para UPSERT em uma tabela, desde que:
Data upsert a ~ 1 linha / segundoNome da tabela é DINÂMICO, gerado usando o parâmetro ObjectID passado para eleO SEGUINTE PROCEDIMENTO: "ORA-00942: a tabela ou a exibição não existe"
CREATE OR REPLACE PROCEDURE
PROCEDURE "SPINSERTDATA"
(
pObjectID IN RAW,
pDateTime IN TIMESTAMP,
pValue IN BINARY_DOUBLE,
)
AS
BEGIN
Declare
vQueryInsert VARCHAR2(1000);
vQueryUpdate VARCHAR2(1000);
vTableName VARCHAR2(30);
Begin
vTableName := FGETTABLENAME(POBJECTID => pObjectID);
vQueryUpdate := 'UPDATE ' || vTableName || ' SET "VALUE" = :1';
vQueryInsert := 'INSERT INTO ' || vTableName || ' ("DTTIME", "VALUE") VALUES (:1, :2)';
EXECUTE IMMEDIATE vQueryInsert USING pDateTime, pValue;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
EXECUTE IMMEDIATE vQueryUpdate USING pValue;
End;
END "SPINSERTDATA";
Aparentemente, o MERGE não funciona, pois o TableName não pode ser dinâmico ??? Sou novato, no meu terceiro mês de codificação, vasculhei o STACKOVERFLOW & pesquisei no Google por 3 dias, tentando todo tipo de soluções engraçadas e desesperadas ... Mesmo um link muito relevante se você encontrasse um seria honestamente apreciado.