Сразу скажу, что новичек в oracle sql, поэтому не судите строго, возможно, за глупый вопрос.
Есть скрипт создающий несколько таблиц с данными. При его запуске, таблицы, которые содержат date несоздаются. Получаю такую ошибку:
ORA-01858: a non-numeric character was found where a numeric was expected
no rows selected
Что можно сделать, что бы создать эти таблицы? Помогите, пожалуйста!
Спасибо!
Ошибка ORA-01858
-
- Уже с Приветом
- Posts: 188
- Joined: 03 Apr 2000 09:01
- Location: FC, CA, USA
Ошибка ORA-01858
Last edited by Tasha on 10 Oct 2003 22:15, edited 1 time in total.
-
- Уже с Приветом
- Posts: 188
- Joined: 03 Apr 2000 09:01
- Location: FC, CA, USA
Сам скрипт. Спасибо заранее!
DROP TABLE CUSTOMERS;
DROP TABLE ORDERS;
DROP TABLE PUBLISHER;
DROP TABLE AUTHOR;
DROP TABLE BOOKS;
DROP TABLE ORDERITEMS;
DROP TABLE BOOKAUTHOR;
DROP TABLE PROMOTION;
...
Create Table Orders
(Order# NUMBER(4) PRIMARY KEY,
Customer# NUMBER(4),
OrderDate DATE,
ShipDate DATE,
ShipStreet VARCHAR2(18),
ShipCity VARCHAR2(15),
ShipState VARCHAR2(2),
ShipZip VARCHAR2(5));
INSERT INTO ORDERS
VALUES (1000,1005, '31-MAR-03','02-APR-03','1201 ORANGE AVE', 'SEATTLE', 'WA', '98114');
INSERT INTO ORDERS
VALUES (1001,1010, '31-MAR-03','01-APR-03', '114 EAST SAVANNAH', 'ATLANTA', 'GA', '30314');
INSERT INTO ORDERS
VALUES (1002,1011,'31-MAR-03','01-APR-03','58 TILA CIRCLE', 'CHICAGO', 'IL', '60605');
INSERT INTO ORDERS
VALUES (1003,1001,'01-APR-03','01-APR-03','958 MAGNOLIA LANE', 'EASTPOINT', 'FL', '32328');
INSERT INTO ORDERS
VALUES (1004,1020,'01-APR-03','05-APR-03','561 ROUNDABOUT WAY', 'TRENTON', 'NJ', '08601');
INSERT INTO ORDERS
VALUES (1005,1018,'01-APR-03','02-APR-03', '1008 GRAND AVENUE', 'MACON', 'GA', '31206');
INSERT INTO ORDERS
VALUES (1006,1003,'01-APR-03','02-APR-03','558A CAPITOL HWY.', 'TALLAHASSEE', 'FL', '32307');
INSERT INTO ORDERS
VALUES (1007,1007,'02-APR-03','04-APR-03', '9153 MAIN STREET', 'AUSTIN', 'TX', '78710');
INSERT INTO ORDERS
VALUES (1008,1004,'02-APR-03','03-APR-03', '69821 SOUTH AVENUE', 'BOISE', 'ID', '83707');
INSERT INTO ORDERS
VALUES (1009,1005,'03-APR-03','05-APR-03','9 LIGHTENING RD.', 'SEATTLE', 'WA', '98110');
INSERT INTO ORDERS
VALUES (1010,1019,'03-APR-03','04-APR-03','384 WRONG WAY HOME', 'MORRISTOWN', 'NJ', '07960');
INSERT INTO ORDERS
VALUES (1011,1010,'03-APR-03','05-APR-03', '102 WEST LAFAYETTE', 'ATLANTA', 'GA', '30311');
INSERT INTO ORDERS
VALUES (1012,1017,'03-APR-03',NULL,'1295 WINDY AVENUE', 'KALMAZOO', 'MI', '49002');
INSERT INTO ORDERS
VALUES (1013,1014,'03-APR-03','04-APR-03','7618 MOUNTAIN RD.', 'CODY', 'WY', '82414');
INSERT INTO ORDERS
VALUES (1014,1007,'04-APR-03','05-APR-03', '9153 MAIN STREET', 'AUSTIN', 'TX', '78710');
INSERT INTO ORDERS
VALUES (1015,1020,'04-APR-03',NULL,'557 GLITTER ST.', 'TRENTON', 'NJ', '08606');
INSERT INTO ORDERS
VALUES (1016,1003,'04-APR-03',NULL,'9901 SEMINOLE WAY', 'TALLAHASSEE', 'FL', '32307');
INSERT INTO ORDERS
VALUES (1017,1015,'04-APR-03','05-APR-03','887 HOT ASPHALT ST', 'MIAMI', 'FL', '33112');
INSERT INTO ORDERS
VALUES (1018,1001,'05-APR-03',NULL,'95812 HIGHWAY 98', 'EASTPOINT', 'FL', '32328');
INSERT INTO ORDERS
VALUES (1019,1018,'05-APR-03',NULL, '1008 GRAND AVENUE', 'MACON', 'GA', '31206');
INSERT INTO ORDERS
VALUES (1020,1008,'05-APR-03',NULL,'195 JAMISON LANE', 'CHEYENNE', 'WY', '82003');
......
Create table Books
(ISBN VARCHAR2(10) PRIMARY KEY,
Title VARCHAR2(30),
PubDate DATE,
PubID NUMBER (2),
Cost NUMBER (5,2),
Retail NUMBER (5,2),
Category VARCHAR2(12));
INSERT INTO BOOKS
VALUES ('1059831198','BODYBUILD IN 10 MINUTES A DAY','21-JAN-01',4,18.75,30.95, 'FITNESS');
INSERT INTO BOOKS
VALUES ('0401140733','REVENGE OF MICKEY','14-DEC-01',1,14.20,22.00, 'FAMILY LIFE');
INSERT INTO BOOKS
VALUES ('4981341710','BUILDING A CAR WITH TOOTHPICKS','18-MAR-02',2,37.80,59.95, 'CHILDREN');
INSERT INTO BOOKS
VALUES ('8843172113','DATABASE IMPLEMENTATION','04-JUN-99',3,31.40,55.95, 'COMPUTER');
INSERT INTO BOOKS
VALUES ('3437212490','COOKING WITH MUSHROOMS','28-FEB-00',4,12.50,19.95, 'COOKING');
INSERT INTO BOOKS
VALUES ('3957136468','HOLY GRAIL OF ORACLE','31-DEC-01',3,47.25,75.95, 'COMPUTER');
INSERT INTO BOOKS
VALUES ('1915762492','HANDCRANKED COMPUTERS','21-JAN-01',3,21.80,25.00, 'COMPUTER');
INSERT INTO BOOKS
VALUES ('9959789321','E-BUSINESS THE EASY WAY','01-MAR-02',2,37.90,54.50, 'COMPUTER');
INSERT INTO BOOKS
VALUES ('2491748320','PAINLESS CHILD-REARING','17-JUL-00',5,48.00,89.95, 'FAMILY LIFE');
INSERT INTO BOOKS
VALUES ('0299282519','THE WOK WAY TO COOK','11-SEP-00',4,19.00,28.75, 'COOKING');
INSERT INTO BOOKS
VALUES ('8117949391','BIG BEAR AND LITTLE DOVE','08-NOV-01',5,5.32,8.95, 'CHILDREN');
INSERT INTO BOOKS
VALUES ('0132149871','HOW TO GET FASTER PIZZA','11-NOV-02',4,17.85,29.95, 'SELF HELP');
INSERT INTO BOOKS
VALUES ('9247381001','HOW TO MANAGE THE MANAGER','09-MAY-99',1,15.40,31.95, 'BUSINESS');
INSERT INTO BOOKS
VALUES ('2147428890','SHORTEST POEMS','01-MAY-01',5,21.85,39.95, 'LITERATURE');
....
Commit;
DROP TABLE ORDERS;
DROP TABLE PUBLISHER;
DROP TABLE AUTHOR;
DROP TABLE BOOKS;
DROP TABLE ORDERITEMS;
DROP TABLE BOOKAUTHOR;
DROP TABLE PROMOTION;
...
Create Table Orders
(Order# NUMBER(4) PRIMARY KEY,
Customer# NUMBER(4),
OrderDate DATE,
ShipDate DATE,
ShipStreet VARCHAR2(18),
ShipCity VARCHAR2(15),
ShipState VARCHAR2(2),
ShipZip VARCHAR2(5));
INSERT INTO ORDERS
VALUES (1000,1005, '31-MAR-03','02-APR-03','1201 ORANGE AVE', 'SEATTLE', 'WA', '98114');
INSERT INTO ORDERS
VALUES (1001,1010, '31-MAR-03','01-APR-03', '114 EAST SAVANNAH', 'ATLANTA', 'GA', '30314');
INSERT INTO ORDERS
VALUES (1002,1011,'31-MAR-03','01-APR-03','58 TILA CIRCLE', 'CHICAGO', 'IL', '60605');
INSERT INTO ORDERS
VALUES (1003,1001,'01-APR-03','01-APR-03','958 MAGNOLIA LANE', 'EASTPOINT', 'FL', '32328');
INSERT INTO ORDERS
VALUES (1004,1020,'01-APR-03','05-APR-03','561 ROUNDABOUT WAY', 'TRENTON', 'NJ', '08601');
INSERT INTO ORDERS
VALUES (1005,1018,'01-APR-03','02-APR-03', '1008 GRAND AVENUE', 'MACON', 'GA', '31206');
INSERT INTO ORDERS
VALUES (1006,1003,'01-APR-03','02-APR-03','558A CAPITOL HWY.', 'TALLAHASSEE', 'FL', '32307');
INSERT INTO ORDERS
VALUES (1007,1007,'02-APR-03','04-APR-03', '9153 MAIN STREET', 'AUSTIN', 'TX', '78710');
INSERT INTO ORDERS
VALUES (1008,1004,'02-APR-03','03-APR-03', '69821 SOUTH AVENUE', 'BOISE', 'ID', '83707');
INSERT INTO ORDERS
VALUES (1009,1005,'03-APR-03','05-APR-03','9 LIGHTENING RD.', 'SEATTLE', 'WA', '98110');
INSERT INTO ORDERS
VALUES (1010,1019,'03-APR-03','04-APR-03','384 WRONG WAY HOME', 'MORRISTOWN', 'NJ', '07960');
INSERT INTO ORDERS
VALUES (1011,1010,'03-APR-03','05-APR-03', '102 WEST LAFAYETTE', 'ATLANTA', 'GA', '30311');
INSERT INTO ORDERS
VALUES (1012,1017,'03-APR-03',NULL,'1295 WINDY AVENUE', 'KALMAZOO', 'MI', '49002');
INSERT INTO ORDERS
VALUES (1013,1014,'03-APR-03','04-APR-03','7618 MOUNTAIN RD.', 'CODY', 'WY', '82414');
INSERT INTO ORDERS
VALUES (1014,1007,'04-APR-03','05-APR-03', '9153 MAIN STREET', 'AUSTIN', 'TX', '78710');
INSERT INTO ORDERS
VALUES (1015,1020,'04-APR-03',NULL,'557 GLITTER ST.', 'TRENTON', 'NJ', '08606');
INSERT INTO ORDERS
VALUES (1016,1003,'04-APR-03',NULL,'9901 SEMINOLE WAY', 'TALLAHASSEE', 'FL', '32307');
INSERT INTO ORDERS
VALUES (1017,1015,'04-APR-03','05-APR-03','887 HOT ASPHALT ST', 'MIAMI', 'FL', '33112');
INSERT INTO ORDERS
VALUES (1018,1001,'05-APR-03',NULL,'95812 HIGHWAY 98', 'EASTPOINT', 'FL', '32328');
INSERT INTO ORDERS
VALUES (1019,1018,'05-APR-03',NULL, '1008 GRAND AVENUE', 'MACON', 'GA', '31206');
INSERT INTO ORDERS
VALUES (1020,1008,'05-APR-03',NULL,'195 JAMISON LANE', 'CHEYENNE', 'WY', '82003');
......
Create table Books
(ISBN VARCHAR2(10) PRIMARY KEY,
Title VARCHAR2(30),
PubDate DATE,
PubID NUMBER (2),
Cost NUMBER (5,2),
Retail NUMBER (5,2),
Category VARCHAR2(12));
INSERT INTO BOOKS
VALUES ('1059831198','BODYBUILD IN 10 MINUTES A DAY','21-JAN-01',4,18.75,30.95, 'FITNESS');
INSERT INTO BOOKS
VALUES ('0401140733','REVENGE OF MICKEY','14-DEC-01',1,14.20,22.00, 'FAMILY LIFE');
INSERT INTO BOOKS
VALUES ('4981341710','BUILDING A CAR WITH TOOTHPICKS','18-MAR-02',2,37.80,59.95, 'CHILDREN');
INSERT INTO BOOKS
VALUES ('8843172113','DATABASE IMPLEMENTATION','04-JUN-99',3,31.40,55.95, 'COMPUTER');
INSERT INTO BOOKS
VALUES ('3437212490','COOKING WITH MUSHROOMS','28-FEB-00',4,12.50,19.95, 'COOKING');
INSERT INTO BOOKS
VALUES ('3957136468','HOLY GRAIL OF ORACLE','31-DEC-01',3,47.25,75.95, 'COMPUTER');
INSERT INTO BOOKS
VALUES ('1915762492','HANDCRANKED COMPUTERS','21-JAN-01',3,21.80,25.00, 'COMPUTER');
INSERT INTO BOOKS
VALUES ('9959789321','E-BUSINESS THE EASY WAY','01-MAR-02',2,37.90,54.50, 'COMPUTER');
INSERT INTO BOOKS
VALUES ('2491748320','PAINLESS CHILD-REARING','17-JUL-00',5,48.00,89.95, 'FAMILY LIFE');
INSERT INTO BOOKS
VALUES ('0299282519','THE WOK WAY TO COOK','11-SEP-00',4,19.00,28.75, 'COOKING');
INSERT INTO BOOKS
VALUES ('8117949391','BIG BEAR AND LITTLE DOVE','08-NOV-01',5,5.32,8.95, 'CHILDREN');
INSERT INTO BOOKS
VALUES ('0132149871','HOW TO GET FASTER PIZZA','11-NOV-02',4,17.85,29.95, 'SELF HELP');
INSERT INTO BOOKS
VALUES ('9247381001','HOW TO MANAGE THE MANAGER','09-MAY-99',1,15.40,31.95, 'BUSINESS');
INSERT INTO BOOKS
VALUES ('2147428890','SHORTEST POEMS','01-MAY-01',5,21.85,39.95, 'LITERATURE');
....
Commit;
-
- Уже с Приветом
- Posts: 1009
- Joined: 16 Sep 2001 09:01
- Location: USA
Re: Ошибка ORA-01858
На мой взгляд, чтобы все надежно работало, INSERTы должны выглядеть так:
INSERT INTO ORDERS (Order#, Customer#, OrderDate, ShipDate, ShipStreet, ShipCity, ShipState, ShipZip)
VALUES (1000,1005, TO_DATE( '31-MAR-03', 'DD-MON-YY' ),TO_DATE( '02-APR-03', 'DD-MON-YY' ),'1201 ORANGE AVE', 'SEATTLE', 'WA', '98114');
аналогично и для BOOKS
то есть две ошибки - не указан порядок следования вставляемых столбцов, и формат даты должен быть либо указан в начале сессии, либо в каждом месте, где дата преобразовывается из текстового формата.
В начале сессии формат даты можно указать так:
SESSION SET NLS_DATE_FORMAT = ''DD-MON-YY';
тогда TO_CHAR не нужно
INSERT INTO ORDERS (Order#, Customer#, OrderDate, ShipDate, ShipStreet, ShipCity, ShipState, ShipZip)
VALUES (1000,1005, TO_DATE( '31-MAR-03', 'DD-MON-YY' ),TO_DATE( '02-APR-03', 'DD-MON-YY' ),'1201 ORANGE AVE', 'SEATTLE', 'WA', '98114');
аналогично и для BOOKS
то есть две ошибки - не указан порядок следования вставляемых столбцов, и формат даты должен быть либо указан в начале сессии, либо в каждом месте, где дата преобразовывается из текстового формата.
В начале сессии формат даты можно указать так:
SESSION SET NLS_DATE_FORMAT = ''DD-MON-YY';
тогда TO_CHAR не нужно
-
- Уже с Приветом
- Posts: 188
- Joined: 03 Apr 2000 09:01
- Location: FC, CA, USA
tchicago, спасибо!
alter session я делала сразу, не помогло. Точнее стала на месяц ругаться после alter.
script я не стала менять, т.к. он у нас был дан готовый в классе. Ни у кого, и у меня в том числе такой проблемы в классе не было. А попробовала запустить дома - такая ошибка. Может у меня что с default setting oracle не так?! Я после установки никаких опций еще не меняла. Но всё равно странно, почему после alter session ошибка с месяцем стала появлятся в том же месте. Попробую изменить script, как Вы советуете, может получится.
Спасибо!
Может еще у кого какие-то соображение будут на эту тему?
alter session я делала сразу, не помогло. Точнее стала на месяц ругаться после alter.
script я не стала менять, т.к. он у нас был дан готовый в классе. Ни у кого, и у меня в том числе такой проблемы в классе не было. А попробовала запустить дома - такая ошибка. Может у меня что с default setting oracle не так?! Я после установки никаких опций еще не меняла. Но всё равно странно, почему после alter session ошибка с месяцем стала появлятся в том же месте. Попробую изменить script, как Вы советуете, может получится.
Спасибо!
Может еще у кого какие-то соображение будут на эту тему?
-
- Уже с Приветом
- Posts: 188
- Joined: 03 Apr 2000 09:01
- Location: FC, CA, USA
-
- Уже с Приветом
- Posts: 1917
- Joined: 08 Jul 2003 17:42
- Location: Canada
Tasha wrote:Изменила скрипт, теперь везде ошибка:
ORA-01843: not a valid month
Скорее всего у вас стоит не-американский (или любой другой не-англоязычный) язык даты - это параметр NLS_DATE_LANGUAGE. Тогда у вас месяц в формате -MON- будет, к примеру , ЯНВ вместо JAN , если стоит что-то русское (в смысле - в INSERT должен быть на том-же языке).
Что-бы проверить :
select to_char(sysdate,'DD-MON-YY') from dual;
или
SELECT * FROM NLS_SESSION_PARAMETERS;
Last edited by RGoo on 12 Oct 2003 01:08, edited 1 time in total.
Дочки rulezzz !
-
- Уже с Приветом
- Posts: 1917
- Joined: 08 Jul 2003 17:42
- Location: Canada
Re: Ошибка ORA-01858
tchicago wrote: и формат даты должен быть либо указан в начале сессии, либо в каждом месте, где дата преобразовывается из текстового формата.
IMHO это верно, ТОЛЬКО если формат даты в стейтментах отличается от того, что в NLS_*. Если формат правильный (такой-же)- простро строка в кавычках катит - автопреобразование типов срабатывает.
Дочки rulezzz !
-
- Уже с Приветом
- Posts: 188
- Joined: 03 Apr 2000 09:01
- Location: FC, CA, USA