Как внедрить SQL-запрос в процедуру Oracle Forms - PullRequest
0 голосов
/ 10 апреля 2019

Я создал запрос для проверки данных проверки в таблице и вставки в таблицу.Я хочу применить этот запрос в блок процедурной программы Oracle Forms.Я новичок и не знаю, как реализовать этот запрос в процедуре.Мне нужна процедура для применения при проверке кнопки триггера при нажатии кнопки

Запрос:

INSERT INTO we_group_hof
(col1,col2,col3,col4,col5,col6
SELECT col1,col2,col3,col4,col5
FROM we_group_hof_k
WHERE col1 IS NOT NULL
AND col2 = 2
AND LENGTH(col3) <=13
AND col4 = 'Y'
AND col5 = 'A'
AND col6 <= sysdate
AND col6 IS NOT NULL;

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Вы можете создать такую ​​хранимую или внутреннюю (в узле Program Units) процедуру, такую ​​как

create or replace procedure pr_insert_grp_hof
                           (
                            i_col1 we_group_hof_k.col1%type,
                            i_col2 we_group_hof_k.col2%type,
                            i_col3 we_group_hof_k.col3%type,
                            i_col4 we_group_hof_k.col4%type,
                            i_col5 we_group_hof_k.col5%type,
                            i_col6 we_group_hof_k.col6%type
                           ) is
begin
  insert into we_group_hof_k
  select col1, col2, col3, col4, col5, col6
    from we_group_hof_k
   where i_col1 is not null
     and i_col2 = 2
     and length(i_col3) <= 13
     and i_col4 = 'Y'
     and i_col5 = 'A'
     and i_col6 <= sysdate
     and i_col6 is not null;
end;

, где имена параметров для процедуры начинаются с префикса i_ и в которых удаляется часть create or replace в начале, если вы создали внутреннюю процедуру.

После добавления кнопки из палитры инструментов щелкните ее правой кнопкой мыши и перетащите на Smart Triggers, выберите WHEN-BUTTON-PRESSED и напишите в ней простой код:

pr_insert_grp_hof;
commit;
0 голосов
/ 10 апреля 2019

Создайте процедуру, используя соответствующий узел в Навигаторе объектов (нажмите зеленую кнопку «+» на вертикальной панели инструментов).Код процедуры будет довольно простым, без каких-либо параметров (как это предлагает ваш код):

procedure p_myproc is
begin
  insert into we_group_hof
  ... the rest of your query goes here
  and col6 is not null;
end;

Затем вы вызываете его из триггера WHEN-BUTTON-PRESSED, указав его имя:

p_myproc;

Посмотрите, хотите ли вы выполнить неявную фиксацию (путем вызова STANDARD.COMMIT изнутри процедуры или триггера) или позволить пользователям принять решение (т.е. зафиксировать вручную).

...