如何在ORACLE存储过程中调用WEBSERVICE函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ORACLE存储过程中调用WEBSERVICE函数相关的知识,希望对你有一定的参考价值。
oracle中调用函数是十分简单的,存储过车调用函数也是一样的。例子如下:create procedure pro_name1asv_para varchar2(200):=‘Im Danny\';begin--without parameters casepro_name2;--with parameters casepro_name3(v_para);end; 参考技术A 数据库不直接对外访问 webservice的服务的,这样会导致数据库的访问风险。
Oracle:如何使用 if 条件在存储过程中调用存储过程
【中文标题】Oracle:如何使用 if 条件在存储过程中调用存储过程【英文标题】:Oracle: How to call a stored procedure within a stored procedure with if-condition 【发布时间】:2019-06-17 15:27:03 【问题描述】:我必须在带有 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 也是如此。这里有什么问题?
感谢您的帮助! 问候克里斯托夫
【问题讨论】:
首先将l_count
局部变量转换为pls_integer
类型。但对于其余的,没有数据我们无法知道。
声明游标不会获取任何结果。您需要实际获取它。顺便说一句,PL/SQL 中的 if
条件周围没有括号 - 它有 then
关键字。
【参考方案1】:
VARCHAR2
不是存储数字数据的好选择。我建议您使用数据类型NUMBER
定义l_count
。此外,您定义了一个游标,但您从不执行它。你可以试试:
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
。根据需要进行调整。
我想你会发现这个效果更好。
【讨论】:
谢谢你,鲍勃 - 和其他人!我对 pl/sql 不是很熟悉(你可能已经猜到了......)。没有光标(我还没有看到树木的木材)该程序有效。 BR克里斯托夫以上是关于如何在ORACLE存储过程中调用WEBSERVICE函数的主要内容,如果未能解决你的问题,请参考以下文章