Oracle APEX PL/SQL代码中XML字符串双引号拼接问题
解决PL/SQL中XML字符串参数拼接的引号问题
我明白你的问题啦——你现在需要在PL/SQL里拼接XML字符串,让不带双引号的参数值(比如admin)最终在XML节点里被双引号包裹,直接拼接参数的写法确实达不到预期效果,我给你两种靠谱的解决办法:
1. 手动拼接双引号的字符串写法
如果只是简单的字符串拼接,你只需要在参数的前后分别加上双引号(PL/SQL里单引号包裹的字符串中,双引号可以直接书写),修改后的代码如下:
'<urn:Login> <!--TrustedId>$tr.ByRb08A8</TrustedId--> <urn:UserName>"' || p_username || '"</urn:UserName> <urn:Password>"' || p_password || '"</urn:Password> </urn:Login>'
这里的核心是:把双引号作为字符串的一部分,和参数值拼接在一起。比如当p_username的值是admin时,拼接后就会生成<urn:UserName>"admin"</urn:UserName>,完全符合你想要的格式。
2. 更安全的XML类型构造写法
如果你的参数值可能包含XML特殊字符(比如&、<、>),手动拼接字符串很容易导致XML格式错误,这时候推荐用Oracle原生的XMLElement函数来构造XML,既安全又易维护:
DECLARE p_username VARCHAR2(50) := 'admin'; p_password VARCHAR2(50) := 'test&123'; -- 包含特殊字符的示例 v_xml XMLTYPE; BEGIN -- 构造XML,若需要给值加双引号,就在参数前后拼接引号 v_xml := XMLElement( "urn:Login", XMLComment('TrustedId>$tr.ByRb08A8'), XMLElement("urn:UserName", '"' || p_username || '"'), XMLElement("urn:Password", '"' || p_password || '"') ); -- 输出生成的XML DBMS_OUTPUT.PUT_LINE(v_xml.getClobVal()); END; /
这种方法的优势在于Oracle会自动处理特殊字符的转义(比如上面例子里的&会被转成&),避免XML格式错误,同时代码结构更清晰,后期修改标签或参数也更方便。
内容的提问来源于stack exchange,提问作者Abinnaya
相关产品推荐
相关产品推荐

