Web Services 避免等待通过Oracle数据库发送HTTP请求

gstyhher  于 2023-02-16  发布在  Oracle
关注(0)|答案(1)|浏览(167)

我有一个连接到Oracle数据库的应用程序,它可以在Oracle数据库中执行select、insert和update语句。我想调用该应用程序中的一个函数,通知Oracle数据库发送http请求。
我的目标:

  • 触发后忘记-应用程序和数据库不关心响应或请求是否成功
  • 应用程序和数据库不应等待响应

我在考虑这些方法:
1.应用程序向表中插入行,插入后触发器调用使用UTL_HTTP执行请求的db函数
1.应用程序通过select语句调用使用UTL_HTTP的db函数来执行请求
就我的目标而言,上述方法的优势/缺陷是什么?

k75qkfdt

k75qkfdt1#

以下是我脑海中的一些想法,我相信还有其他的考虑:
1.如果您在触发器中执行此操作,那么即使您随后决定回滚插入,http请求也会发出。那么,您是否可以发送http请求,但在表中没有任何行结束?如果可以,触发器就可以了。
1.如果你在触发器中加载行,那么任何其他的接口或者需要手动加载行到表中的人都会触发http请求。这是你想要的吗?那么触发器是很好的。如果不是,触发器就不那么好了。
1.如果表被删除,触发器也会被删除。如果你做的是我们在数据仓库中经常做的维护(CTAS创建新表、删除旧表、将新表重命名为旧表等)您很容易丢失代码,因为代码包含在触发器中,而触发器会随着表的删除而消失。触发器对于复杂代码来说并不安全。如果您最终使用了触发器,考虑让触发器简单地调用一个过程,并将所有实际代码存储在该过程中。
1.如果你决定根本不使用触发器,你最好写一个过程,而不是一个通过select语句调用的函数。函数的目的是返回一些东西,在这种情况下,你不需要从http进程中返回任何东西。select语句是任意的。只要使用一个普通的过程调用就行了。

相关问题