Сравнение списков в БД и List с целью удаления лишних Pl/Sql

256
19 октября 2017, 08:43

Есть таблица:

CREATE TABLE my_table (
  name  VARCHAR2(20 BYTE) NOT NULL,
  car   VARCHAR2(40 BYTE) NOT NULL,
  rank  NUMBER,
  PRIMARY KEY (name, car)
);

В Java у меня есть List - обьекты, хранящие информацию name, car, rank = null.

Необходимо написать хранимую функцию (pl/sql), реализующюю следующее:

  • Если в List есть обьекты, которых нет в таблице, добавить их в таблицу.

  • Если в List нет записей, которые есть в таблице, удалить их из таблицы.

  • В этих операциях не учитывать поле rank (т.е. при сравнении без разницы на его значение).

Додумался только до этого:

DECLARE  
  type my_table_array IS TABLE OF my_table%ROWTYPE;
  v_Numbers my_table_array := my_table_array();
  rec  my_table%ROWTYPE;
  idx number;
BEGIN
  v_Numbers.extend(1);
  idx := v_Numbers.count;
  rec.name := 'John';
  rec.car := 'Toyota';
  rec.rank := 5;
  v_Numbers(idx) := rec;
END;

Как теперь в BEGIN красиво проверить? Если нету таких записей в таблице, добавить. Причем пробежать по всем v_Numbers.

READ ALSO
Как подключить jdbc к серверу приложений GlassFish

Как подключить jdbc к серверу приложений GlassFish

Создаю в NetBeans web приложение с использованием GlassFish, jdbc, MySql по примеру взятому отсюда

301
Имитация событий selenium web driver

Имитация событий selenium web driver

Есть сайт qunarcom Я хочу с помощью selenium web driver на java в поле input ввести текст, но мне пишет что element not visible

278
Как скрыть диалоговое окно?

Как скрыть диалоговое окно?

Имеется AlertDialogBuilder, у которого разметка кастомный

288
Байты некорректно передаются в base64 из C# в Java

Байты некорректно передаются в base64 из C# в Java

Есть вот такой вот кусок кода на c# который конвертит интовский массив в base64

290