ORA-01756: строка в кавычках неправильно завершена, нужно ли добавлять кавычки на номер телефона, почему? - PullRequest
0 голосов
/ 28 февраля 2019
SQL> create table customer(
  2  customer_ID number(3) primary key,
  3  customer_Name varchar2(26),
  4  contact_Name  varchar2(26),
  5  phone number(10));

Table created.

SQL> desc customer
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 CUSTOMER_ID                               NOT NULL NUMBER(3)
 CUSTOMER_NAME                                      VARCHAR2(26)
 CONTACT_NAME                                       VARCHAR2(26)
 PHONE                                              NUMBER(10)
SQL> insert into customer 
        (customer_ID, customer_Name, contact_Name, phone) 
        values (23, 'Dave's Sub Shop', 'David Logan', 555-333-4545);
ERROR:
ORA-01756: quoted string not properly terminated

Может кто-нибудь объяснить мне эту ошибку?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Здесь есть две проблемы:

  • вы вставляете строку, содержащую встроенную одинарную кавычку: 'Dave's Sub Shop'.Глюк обнаруживается в любом приличном текстовом редакторе (включая SO).Вам необходимо экранировать кавычку: 'Dave''s Sub Shop'

  • столбец phone_number объявлен как number(10), однако то, что вы пытаетесь вставить, не похоже на одно: 555-333-4545,Вам следует изменить тип данных столбца на varchar(12).Затем вам нужно будет указать значения, которые вы вставляете.

Демонстрация на DB Fiddle :

create table customer(
    customer_ID number(3) primary key,
    customer_Name varchar2(26),
    contact_Name  varchar2(26),
    phone varchar(12));

insert into customer 
        (customer_ID, customer_Name, contact_Name, phone) 
        values (23, 'Dave''s Sub Shop', 'David Logan', '555-333-4545');

1 rows affected

select * from customer;

CUSTOMER_ID | CUSTOMER_NAME   | CONTACT_NAME | PHONE       
----------: | :-------------- | :----------- | :-----------
         23 | Dave's Sub Shop | David Logan  | 555-333-4545

Примечание: другое решение - преобразовать номер телефона втип данных числа перед его вставкой (например, путем удаления встроенного -), но я бы не рекомендовал его, поскольку номера телефонов на самом деле , а не : они могут иметь значащие начальные нули и могут содержать нецифры ((), +, ...)

0 голосов
/ 28 февраля 2019

Вы хотите:

insert into customer (customer_ID, customer_Name, contact_Name, phone) 
    values (23, 'Dave''s Sub Shop', 'David Logan', '555-333-4545');

Ваша ошибка связана с "Dave's Sub Shop".Первая кавычка берется в качестве конца строки, поэтому ошибка возникает в s.

. 555-333-4545 не обязательно приведет к ошибке.Но он выдаст число -4323, что не соответствует вашим намерениям.

0 голосов
/ 28 февраля 2019

Вам нужно убежать от апострофа в магазине Dave's Sub Shop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...