使用Oracle中的quote运算符插入分号

时间:2017-10-20 01:32:00

标签: sql oracle unix sqlplus

我有以下SQL用于更新现有表中的CSS,

SET DEFINE OFF;

UPDATE SCHEMANAME.template
   SET body = q'[
<style type="text/css">
  #header {
    background-color:#004F5D;
    height:100px;
    position:relative;
  }]'
WHERE name = 'CSS';

模板表具有以下结构,

NAME    NOT NULL VARCHAR2(150)
SUBJECT NOT NULL VARCHAR2(4000)
BODY    NOT NULL CLOB
VERSION NUMBER(18)

但是,当我使用sqlplus运行update语句时,

ERROR:
ORA-01756: quoted string not properly terminated

SQL> SP2-0734: unknown command beginning "height:100..." - rest of line ignored.
SQL> SP2-0734: unknown command beginning "position:r..." - rest of line ignored.
SQL> SP2-0042: unknown command "}]'" - rest of line ignored.

我正在使用,

SQL*Plus: Release 11.2.0.4.0 Production

和Oracle,

Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0  Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

在我看来,sqlplus对标题块内第一个声明结尾处的分号字符感到不安。

我试过发布,

SET ESCAPE OFF

在运行更新语句之前,问题仍然存在。

我可以通过将UPDATE包装在BEGIN-END块中来解决这个问题。 这是使这项工作的唯一方法吗?

引用运算符是否与';'有问题在街区内?

1 个答案:

答案 0 :(得分:0)

它似乎将您的更新声明分为4个部分 -

  1. UPDATE SCHEMANAME.template SET body = q'[ <style type="text/css"> #header { background-color:#004F5D;

  2. height:100px;

  3. position:relative;
  4. }]'
  5. 你可以试试下面的查询

    update SCHEMANAME.template
       SET body = '"'||chr(13)||'<style type="text/css">'||chr(13)||  '#header {'||chr(13)||    'background-color:#004F5D;'||chr(13)||    'height:100px;'||chr(13)||  'position:relative;'||chr(13)||  '}"'
    WHERE name = 'CSS';
    

    而不是引用,我使用chr(13) - 换行。