спасибо за ответ, отсутствие двойных кавычек заставило меня получить ошибку Missing = sign, сначала я ее не понял, а затем, спустя несколько часов, увидел ваш ответ и пытается обернуть все идентификаторы в двойные кавычки и альт, чтобы проблема была решена,.

лучший способ UPSERT в таблицу, при условии:

Скорость передачи данных ~ 1 строка / секундаИмя таблицы - DYNAMIC, сгенерированное с использованием переданного ей параметра ObjectID

СЛЕДУЮЩАЯ ПРОЦЕДУРА ВЫБИРАЕТ: «ORA-00942: таблица или представление не существует»

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";
Видимо MERGE не работает, так как TableName не может быть динамическим ???Я новичок, мой третий месяц кодирования, я полистал STACKOVERFLOW & Googled уже 3 дня, пробуя всевозможные смешные и отчаянные решения ... Даже очень релевантная ссылка, если вы ее нашли, будет честно оценена.

Ответы на вопрос(3)

Ваш ответ на вопрос