Как выполнить 2 процедуры магазина с условиями - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу запустить SP2 внутри SP1. SP2 вставляет несколько данных в таблицу, одна из которых - фактическая дата.

Итак, я хочу, чтобы SP2 выполнялся только в том случае, если в столбце date указана дата в течение последних 10 дней.

Это возможно?

Спасибо

1 Ответ

0 голосов
/ 05 сентября 2018

Вот пример.

Сначала создайте таблицу и вставьте несколько примеров строк:

SQL> create table my_tbl
  2    (id      number,
  3     my_col  date
  4    );

Table created.

SQL> insert into my_tbl (id, my_col)
  2    -- more than 10 days ago
  3    select 1, date '2018-05-25' from dual union all
  4    -- less than 10 days ago
  5    select 2, date '2018-09-01' from dual;

2 rows created.

Создать две процедуры; SP_1 должен вызывать SP_2, если условие выполнено. Я перебираю обе строки в таблице; значение даты в одной строке в порядке, в другом - нет.

SQL> create or replace procedure sp_2 as
  2  begin
  3    dbms_output.put_line('...I am in SP_2 now');
  4  end;
  5  /

Procedure created.

SQL> create or replace procedure sp_1 as
  2  begin
  3    for cur_r in (select my_col from my_tbl order by id) loop
  4      dbms_output.put_line('date value = ' || to_char(cur_r.my_col, 'yyyy-mm-dd'));
  5      if cur_r.my_col >= trunc(sysdate) - 10 then
  6         dbms_output.put_line('...calling SP_2');
  7         sp_2;
  8      else
  9         dbms_output.put_line('...date condition failed - not calling SP_2');
 10      end if;
 11    end loop;
 12  end;
 13  /

Procedure created.

Тестирование:

SQL> set serveroutput on
SQL> begin
  2    sp_1;
  3  end;
  4  /
date value = 2018-05-25
...date condition failed - not calling SP_2
date value = 2018-09-01
...calling SP_2
...I am in SP_2 now

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