带有PL / SQL变量的XPath

时间:2014-10-24 17:05:59

标签: 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.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] 

谢谢!

1 个答案:

答案 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;

分享并享受。