【问题标题】:Storing string containing characters like single, ampersand qoutes in a variable在变量中存储包含字符的字符串,如单引号、和号引号
【发布时间】:2017-06-06 22:23:18
【问题描述】:

我的程序将接收字符串(电子邮件正文消息)作为输入参数,该参数将分配给变量。它可以包含单引号和&符号等字符。我该如何处理这种情况并将字符串按原样分配给 clob 变量。

SET SERVEROUTPUT ON

DECLARE

email_body CLOB;

BEGIN

email_body:=to_clob('Hel's Message');

DBMS_OUTPUT.PUT_LINE(length(email_body));

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUt_LINE(SQLCODE||' '||SQLERRM);

END;

错误:

ORA-06550:第 7 行,第 22 列:PLS-00103:遇到符号“S” 预期以下情况之一时:

【问题讨论】:

  • 如果您的过程将字符串作为输入参数,您根本不必执行任何特殊操作 - 所有引用/转义都将由调用代码执行。

标签: string oracle plsql clob


【解决方案1】:

您可以尝试以下方法:

SET SERVEROUTPUT ON
/* disable variable substitution */
SET DEFINE OFF 

DECLARE
email_body CLOB;
BEGIN
email_body:=to_clob(q'[Hel's M&ssage]'); /* Q operator to avoid issues with quotes */

    DBMS_OUTPUT.PUT_LINE(length(email_body));

EXCEPTION
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUt_LINE(SQLCODE||' '||SQLERRM);
END;
/

这里我使用SET DEFINE OFF 来防止变量替换和Oracle Q quote operator 来处理带引号的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多