Oracle:如何使用if条件在存储过程中调用存储过程

时间:2019-06-17 15:27:03

标签: oracle if-statement stored-procedures plsql

我必须在带有if条件的过程(“ A”)中调用过程(“ B”)(在Oracle 10g中)。但是我无法正常工作。

过程“ B”从多个表中收集数据并将其写入xml文件。如果我无条件调用“ B”,它将写入文件。但是无论是否有数据,它都会写入文件(带有xml-Header)。所以我需要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 :(得分:0)

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。进行必要的调整。

我认为您会发现效果更好。

好运。