UPSERT en la tabla con el nombre dinámico de la tabla
Cualquier método mejor para UPSERT en una tabla, siempre que:
Actualización de datos a ~ 1 fila / segundoTable Name es DYNAMIC, generado utilizando el parámetro ObjectID que se le pasóEL SIGUIENTE PROCEDIMIENTO LANZA: "ORA-00942: la tabla o vista no 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 MERGE no funciona ya que TableName no puede ser dinámico ??? Soy un novato, mi tercer mes de codificación, recorrí STACKOVERFLOW y busqué en Google durante 3 días, probando todo tipo de soluciones divertidas y desesperadas ... Incluso un enlace muy relevante si encontraste uno sería sinceramente apreciado.