作为复杂的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.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_VERSION
。因此,我想打印document
。
问题:如何在第二个命令中正确包含version
?执行上述命令时,它会在代码位置'$version'
输出跟随错误:
PLS-00181: unsupported preprocessor directive '$VERSION' [SQL State=65000, DB Errorcode=6550]
谢谢!
答案 0 :(得分:1)
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;
分享并享受。