0

是否可以使用类似于下面的更新查询手动更新位于 HZ_CONTACT_POINTS 中的联系人的 PL/SQL 过程中的 EMAIL_ADDRESS 或 PHONE_NUMBER 列?

UPDATE hz_contact_points SET phone_number = P_PHONE_NUMBER WHERE owner_table_id = p_party_id AND owner_table_name = 'HZ_PARTIES' and primary_flag = 'Y' AND status = 'A' AND UPPER(contact_point_type) = 'PHONE';

或者

UPDATE hz_contact_points SET email_address = P_EMAIL_ADDRESS WHERE owner_table_id = p_party_id AND owner_table_name = 'HZ_PARTIES' AND PRIMARY_FLAG = 'Y' AND STATUS = 'A' AND UPPER(CONTACT_POINT_TYPE) = 'EMAIL';

或者是否必须使用 API 调用:

HZ_CONTACT_POINT_V2PUB.update_phone_contact_point

或者

HZ_CONTACT_POINT_V2PUB.update_email_contact_point

4

1 回答 1

3

HZ_CONTACT_POINT_V2PUB是 TCA 接口的一部分。引用TCA 文档

“Oracle 交易社区架构 (TCA) 是一种数据模型,可让您管理属于您的商业社区的各方或客户的复杂信息,包括组织、位置以及它们之间的层次关系网络。”

特别是,该复杂信息包括版本历史。这就是 Oracle 应用程序 API 的作用:执行实际的 DML 并协调伴随的更改(依赖关系、版本控制、审计等)以确保该数据模型的一致性

如果您使用 SQL 并手动更新属性,您将不会执行任何操作。

那么,这样“好吗”?也许你会侥幸逃脱而不破坏任何东西。或者您的组织可能不关心版本历史。但是他们花了很多钱来授权 Oracle 应用程序。所以我的建议是使用 API,即使对于这样一个微不足道的操作来说似乎有点矫枉过正。因为如果你养成了绕过 API 的习惯,最终你会破坏数据模型,然后 Oracle Support 会提出一些非常棘手的问题。

于 2014-11-29T07:57:51.330 回答