Oracle: как вызвать хранимую процедуру внутри хранимой процедуры с условием if - PullRequest
0 голосов
/ 17 июня 2019

Мне нужно вызвать процедуру ("B") (в Oracle 10g) внутри процедуры ("A") с условием if. Но я не могу заставить это работать.

Процедура "B" собирает данные из нескольких таблиц и записывает их в xml-файл. Если я вызываю «Б» без условий, он записывает файл. Но это пишет файл (с xml-Заголовком), есть ли данные или нет. Поэтому мне нужно условие if для проверки данных.

Код:

CREATE OR REPLACE PROCEDURE A
AS
 l_count varchar2(3);

 CURSOR c_EXISTSDATA IS
   select count(*) into l_count from bv.history where upddate > sysdate -.015 and tabelle = 'MEDIEN' and userid != 'DATENTAUSH';

BEGIN
IF (l_count != 0)
THEN
B;
END IF;
END;
/

При этом условии if вообще не выводится - даже если l_count! = 0. Что здесь не так?

Спасибо за помощь! С уважением Кристоф

1 Ответ

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

VARCHAR2 не подходит для хранения числовых данных. Я предлагаю вам определить l_count, используя тип данных NUMBER. Кроме того, вы определяете курсор, но никогда не выполняете его. Вы можете попробовать:

CREATE OR REPLACE PROCEDURE A
AS
  l_count NUMBER;    
BEGIN
  select count(*)
    into l_count
    from bv.history
    where upddate > sysdate - INTERVAL '20' MINUTE and
          tabelle = 'MEDIEN' and
          userid != 'DATENTAUSH';

  IF l_count != 0 THEN
    B;
  END IF;
END;

Я не уверен, какой временной интервал вы имели в виду под 0.015. Это равняется 21,6 минутам, поэтому я изменил его на (более четкое) INTERVAL '20' MINUTE Отрегулируйте при необходимости.

Я думаю, вы найдете, что это работает лучше.

Удачи.

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