Сохранение всех строк в таблице оракулов, когда установлен флажок и нажата кнопка «Сохранить» в Oracle PL / SQL - PullRequest
1 голос
/ 17 июня 2019

Мне нужно написать хранимую процедуру в Oracle PLSQL, чтобы сохранить несколько строк одновременно в таблице.

В приведенном ниже пользовательском интерфейсе каждая строка имеет 4 поля, одно из которых имеет флажок. Если флажок установлен и кнопка «Сохранить» нажата, то эта конкретная строка должна быть сохранена в таблице Oracle «Авторизация». Можно установить несколько флажков в разных строках и нажать кнопку «Сохранить», и все эти строки необходимо сохранить в таблице.

Экран пользовательского интерфейса:

Включить | полет | местоположение | статус

enter image description here

1) На экране пользовательского интерфейса видно, что выбраны две строки. Если нажать кнопку «Сохранить», а затем, основываясь на выбранных флажках, эти записи необходимо сохранить в приведенной ниже таблице.

Таблица АВТОРИЗАЦИЯ:

Полет | Расположение | Статус | ВКЛЮЧЕНО
Юнайтед | Бербанк | Поздно | Y
KLM Royal Airlines | Буффало | Поздно | Y

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Нет проблем вставить количество строк в таблицу с помощью процедуры PL / SQL.Вероятно, лучший способ - это передать коллекцию, а затем использовать FORALL, чтобы протолкнуть ее с минимумом переключений контекста и максимальной производительностью.

Трюк для вас - загрузить коллекцию в любой среде интерфейса, в которой вы находитесь.используется, чтобы позволить пользователям выбирать определенные строки на экране.

Вот некоторый код, чтобы дать вам представление о том, что делать:

CREATE TABLE trees
(
   tree_id     NUMBER,
   tree_name   VARCHAR2 (100)
)
/

CREATE OR REPLACE PACKAGE tree_mgr
   AUTHID DEFINER
IS
   TYPE trees_t IS TABLE OF trees%ROWTYPE;

   PROCEDURE ins_trees (trees_in IN trees_t);
END;
/


CREATE OR REPLACE PACKAGE BODY tree_mgr
IS
   PROCEDURE ins_trees (trees_in IN trees_t)
   IS
   BEGIN
      FORALL indx IN INDICES OF trees_in
         INSERT INTO trees (tree_id, tree_name)
              VALUES (trees_in (indx).tree_id, trees_in (indx).tree_name);
   END;
END;
/

DECLARE
   l_trees   tree_mgr.trees_t := tree_mgr.trees_t ();
BEGIN
   l_trees.EXTEND (2);
   l_trees (1).tree_id := 100;
   l_trees (1).tree_name := 'Oak';
   l_trees (2).tree_id := 101;
   l_trees (2).tree_name := 'Elm';
   tree_mgr.ins_trees (l_trees);
END;
/
0 голосов
/ 17 июня 2019
function insertProcedure(isSelect in varchar2 ) return varchar2 is
BEGIN
if isSelect is not null then
FOR r IN
  (SELECT AUT.Flight,AUT.Location,AUT.Status,AUT.INCLUDED 
FROM AUTHORIZATION AUT) 
 LOOP 
  BEGIN
   IF r.somecol = 0  -- SOME IF conditions .
    INSERT INTO yourInsertTable(col1,col2,col3,col4)
    VALUES (r.col1,r.col2,r.col3,r.col4);
   END IF;
   EXCEPTION 
  WHEN OTHERS THEN
  --block_to_log_error;
  END; 
 END;
 END LOOP;
 else 
  //what do you want
 end if;
  exception
  when others then null;
   return 'xxx';
END;

Вам нужна эта процедура, и она может работать или иметь некоторые синтаксические ошибки. Дайте мне знать, если вы заставите его работать или получите ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...