带有PL/SQL变量的XPath
作为一个非常熟悉复杂sql命令的新手,我想执行两个XPath数据库查询,其中第二个命令使用第一个命令的结果:带有PL/SQL变量的XPath,sql,xpath,plsql,Sql,Xpath,Plsql,作为一个非常熟悉复杂sql命令的新手,我想执行两个XPath数据库查询,其中第二个命令使用第一个命令的结果: declare version VARCHAR2(256); document VARCHAR2(256); begin select ID_VERSION into version from VERSIONTABLE where extract(VERSION_XML, '//p:contract[@id="contract-001"]', 'xmlns:p="http://www.
declare
version VARCHAR2(256);
document VARCHAR2(256);
begin
select ID_VERSION into version from VERSIONTABLE where extract(VERSION_XML, '//p:contract[@id="contract-001"]', 'xmlns:p="http://www.foo.com/v1"').getClobVal() IS NOT NULL;
select ID_DOCUMENT into document from DOCUMENTTABLE where extract(DOCUMENT_XML, '//p:content[@ref='$version']', 'xmlns:p="http://www.foo.com/v1"').getClobVal() IS NOT NULL;
end;
/
第一个命令始终只返回一个ID\u版本
。因此,我想打印文档
问题:如何在第二个命令中正确地包含version
?执行上述命令时,它在“$version”
的代码位置输出以下错误:
PLS-00181: unsupported preprocessor directive '$VERSION' [SQL State=65000, DB Errorcode=6550]
谢谢大家! PL/SQL中的字符串连接运算符是
| |
——因此您需要执行以下操作:
select ID_DOCUMENT
into document
from DOCUMENTTABLE
where extract(DOCUMENT_XML,
'//p:content[@ref=' || version || ']',
'xmlns:p="http://www.foo.com/v1"').getClobVal() IS NOT NULL;
分享并享受。感谢您的回答。它起了部分作用:前一个错误当然消失了,但出于某种原因,它找不到任何数据:如果我尝试
version:='version-123
选择ID_DOCUMENT to DOCUMENT from DOCUMENTTABLE where extract(DOCUMENT_XML,//p:content[@ref='| | | |'],'xmlns:p='http://www.foo.com/v1“)。getClobVal()不为NULL代码>错误为ORA-01403:未找到数据
。但是,如果直接插入字符串,则会有数据。你知道原因吗?提前谢谢!