web-dev-qa-db-ja.com

ORA-01756:コードを実行しようとすると、引用符で囲まれたstringが正しく終了しません

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>

どんな助けでも大歓迎です。ありがとうございました。

5
Randy Gilman

一重引用符をエスケープします。

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に注意してください。

6
beautifulcoder

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 [〜#〜]

6
Nagendra Nigade