【发布时间】:2023-03-16 02:47:01
【问题描述】:
在 T-SQL 中我这样做:
CREATE PROCEDURE [dbo].[ps_GetAuditUpdatesRequired]
@AuditXML xml
AS
SET NOCOUNT ON
SELECT
doc.col.value('@id', 'int') AS id
FROM
@AuditXML.nodes('/rths/rth') AS doc(col)
WHERE (
-- Get anything needs to be deleted and does exist in the database already
doc.col.value('@method', 'nvarchar(16)') = 'DELETE' AND EXISTS ( SELECT 1 FROM audits_ WHERE doc.col.value('@id', 'int') = audits_.Id_RetinaId ) OR
-- Get anything that is not set to be deleted and does not already exist with a newer version
doc.col.value('@method', 'nvarchar(16)') != 'DELETE' AND NOT EXISTS ( SELECT 1 FROM audits_ WHERE doc.col.value('@id', 'int') = audits_.Id_RetinaId AND doc.col.value('@versionSerial', 'int' ) <= audits_.nl_VersionSerial)
)
SET NOCOUNT OFF
我怎样才能在 oracle 中做到这一点? 注意:AuditXML 参数在 Oracle 版本中将是一个 CLOB。
【问题讨论】:
-
您能否添加一个示例 XML 文档和其他数据,以及您希望发生什么?
-
你能给出你想选择的元素/属性的 XPath 吗?