Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1

ТЕМА:

Условие на поиск дубликатов 5 года 1 нед. назад #9373

Здравтсвуйте ГУРУ, устал изобретать велосипед. Имеет 2 таблицы связанные left join по pk. Одна с основной информацией, другая (mark) для хранения меток в виде единицы.
DECLARE
    p_id NUMBER(10);
BEGIN
    FOR i IN 1..apex_application.g_f01.count LOOP
            SELECT id
            INTO p_id
            FROM mark
            WHERE id = apex_application.g_f01(i);
            
            CASE p_id
            WHERE IS NULL THEN   
                INSERT INTO mark (id, mark)
                VALUES (apex_application.g_f01(i), 1); 
        
        END CASE;
    END LOOP;
END;
Не могу придуть, как создать условие которое бы не давало исполнить INSERT, если такая запись уже присутствует.
Заранее спасибо!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Условие на поиск дубликатов 5 года 1 нед. назад #9375

Решил вопрос с помощью команды Merge
BEGIN
    FOR i IN 1..apex_application.g_f01.count LOOP
        MERGE INTO mark m 
            USING 
        (SELECT id 
        FROM data_table
        WHERE id = apex_application.g_f01(i)) dt
            ON (m.id = dt.id)
        WHEN MATCHED THEN
            UPDATE SET m.mark = 1
        WHEN NOT MATCHED THEN
            INSERT (id, mark)
        VALUES (apex_application.g_f01(i), 1);
    END LOOP;
END;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Условие на поиск дубликатов 4 года 5 мес. назад #9518

  • apv
  • apv аватар
  • Не в сети
  • Давно я тут
  • Давно я тут
  • Сообщений: 104
  • Спасибо получено: 3
Спасибо, Ваше решение пригодилось и мне!)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.181 секунд