如何在UTL_HTTP.REQUEST语句中放置PLSQL参数(:old.numero)?

时间:2015-08-24 15:06:24

标签: sql oracle http tomcat plsql

我在ORACLE PL / SQL中有一个触发器,如下所示:

create or replace TRIGGER HISTORISATION_PRIX 
BEFORE UPDATE OF PRIX
ON PRODUIT
FOR EACH ROW
DECLARE 
var VARCHAR2(30000);
BEGIN
var := SYS.UTL_HTTP.REQUEST('163.81.56.131:8019/Coctos/insertion?numero=:old.NUMERO&prix=:old.PRIX');
END;

如您所见,在我的请求中,我想放置参数:old.NUMERO:old.PRIX。但是,当我这样做时,触发器不起作用,我更新我的表PRODUIT但没有任何反应。

但如果我提出一些随机数字:

 var := SYS.UTL_HTTP.REQUEST('163.81.56.131:8019/Coctos/insertion?numero=45&prix=555');
END;

然后它完美地运作。

那么,如何在我的请求中引入参数:old.NUMERO:old.PRIX

1 个答案:

答案 0 :(得分:3)

看起来你在字符串中有“:old”,这意味着在你的请求中发送了文字值“:old.NUMERO”和“:old.PRIX”而不是它们的值。 / p>

尝试:

create or replace TRIGGER HISTORISATION_PRIX
    BEFORE UPDATE OF PRIX
ON PRODUIT
FOR EACH ROW
DECLARE 
var VARCHAR2(30000);
BEGIN
var := SYS.UTL_HTTP.REQUEST('163.81.56.131:8019/Coctos/insertion?numero=' || :old.NUMERO || '&prix=' || :old.PRIX);
END;

如果这不起作用,请在触发器中临时添加异常处理程序(在END;之前)并直接在表上运行更新(从SQLPlus开始,服务器输出打开):

exception when others then 
  dbms_output.put_line(' Error Msg  : ' || SYS.UTL_HTTP.get_detailed_sqlcode  || SYS.UTL_HTTP.Get_Detailed_Sqlerrm);