我必须在带有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也是如此。怎么了?
谢谢您的帮助! 问候克里斯托夫
答案 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
。进行必要的调整。
我认为您会发现效果更好。
好运。