【问题标题】:ORA-01756: quoted string not properly terminated when I try to execute my codeORA-01756: 当我尝试执行我的代码时,引用的字符串没有正确终止
【发布时间】:2014-09-28 20:43:18
【问题描述】:

每次尝试在 oracle 中运行此代码时,我都会收到以下消息。代码如下:

DROP TABLE movie;
CREATE TABLE movie (movie_id NUMBER(5)  PRIMARY KEY,
title VARCHAR2(45) NOT NULL,
description VARCHAR2(250) NOT NULL,
released_by NUMBER(3) NOT NULL,
released_on DATE NOT NULL);

INSERT INTO movie (movie_id, title, description, released_by, released_on)VALUES ('1', 'Edge of Tomorrow', 'Lieutenant Colonel Bill Cage is a skilled tactician who has honed his abilities through his experiences as a soldier. However, there is still much he can learn, and soon he is going to get his chance.', '1', '07-OCT-2014');

INSERT INTO movie (movie_id, title, description, released_by, released_on)VALUES('2', 'Captain America: Winter Soldier', 'Steve Rogers is finding it difficult to adjust to living life in the contemporary world. He is working for S.H.I.E.L.D. and begins to suspect a mystery is brewing there.', '2', '09-SEP-2014');

INSERT INTO movie (movie_id, title, description, released_by, released_on)VALUES('3', 'Fed Up', 'America’s problem with obesity is caused by our inactivity. Or is it? Katie Couric and Stephanie Soechtig tempt us to restructure our beliefs about the American diet, through this thought-provoking expose.', '3', '09-SEP-2014');

INSERT INTO movie (movie_id, title, description, released_by, released_on)VALUES('4', 'Godzilla', 'The legendary tale of Godzilla comes roaring back to life. This time, it's the modern era, and Godzilla is a giant lizard who has been made fearsome through the interference of radiation.', '1', '16-SEP-2014');

INSERT INTO movie (movie_id, title, description, released_by, released_on)VALUES('5', 'Neighbors', 'New parents Mac and Kelly settle into domesticity in a quiet neighborhood. The tranquility they have been afforded ceases to exist when a fraternity moves into the house next door.', '2', '14-SEP-2014');

COMMIT;

以下是我尝试在 Oracle 中执行时得到的结果:

Table dropped.


Table created.


1 row created.


1 row created.


1 row created.

ERROR:
ORA-01756: quoted string not properly terminated



1 row created.


Commit complete.

SQL>

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: sql oracle insert


    【解决方案1】:

    试试 Oracle 的报价机制:

    该机制仅在 PL/SQL 中使用简单的“q”调用。

    语法为 q'[...]',其中“[”和“]”字符可以是以下任意字符,只要它们尚未出现在字符串中即可。

    •!

    •[ ]

    •{ }

    •( )

    这里举例,

    INSERT INTO movie (movie_id, title, description, released_by, released_on)
    VALUES('4', 'Godzilla', q'[The legendary tale of Godzilla comes roaring back to
     life. This time, it's the modern era, and Godzilla is a giant lizard who has
     been made fearsome through the interference of radiation.]', '1', '16-SEP-
    2014');
    

    查找所有单引号并将其替换为转义字符总是令人头疼。

    更多参考请关注:THIS

    【讨论】:

      【解决方案2】:

      转义单引号:

      INSERT INTO movie (movie_id, title, description, released_by, released_on)VALUES('4', 'Godzilla', 'The legendary tale of Godzilla comes roaring back to life. This time, it''s the modern era, and Godzilla is a giant lizard who has been made fearsome through the interference of radiation.', '1', '16-SEP-2014');
      

      注意it''s 而不是it's

      【讨论】:

      • 我在it's 中看到了单引号。这需要被转义。
      • 好吧,我只是把撇号去掉了,它就奏效了。不明白为什么这样做,但现在很好,谢谢。
      【解决方案3】:

      我的解决方案尝试:

      <br>
      pelicula = array("titulo"=>"it's the modern era");
      <br>
      

      并插入这个数组。

      插入(%%%,pelicula["titulo"],%%%)。

      解释:Para evitar el problema de la comilla, copia la cadena a un array, inserta el nombre a traves de este array y el questiona se acaba。

      【讨论】:

      • 嗨,fuzz,感谢您的回答,但是关于 SO 的答案应该解释为什么或如何一段代码回答问题,而不是仅仅粘贴一段代码。请看How do I write a good answer?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2015-08-09
      • 1970-01-01
      • 2019-07-22
      • 2022-12-04
      • 2020-12-27
      相关资源
      最近更新 更多