Wpis użytkownika Dalmierz_Ploza w Programowanie
Dalmierz_PlozaGruba ryba
1piorunówOracle SQL
Przy próbie wstawienia danych wyrzuca mi błąd, o co może chodzić?
CREATE TABLE Employee
(id NUMBER GENERATED ALWAYS AS IDENTITY NOT NULL PRIMARY KEY,
FirstName VARCHAR2(128) NOT NULL,
SecondName VARCHAR2(128),
LastName VARCHAR2(128) NOT NULL,
Gender VARCHAR2(1),
BirthDate DATE NOT NULL,
Salary FLOAT(4) NOT NULL,
DepartmnentId NUMBER NOT NULL,
HireDate DATE NOT NULL,
RelieveDate DATE,
Active NUMBER(1));
INSERT INTO Employee(FirstName, SecondName, LastName, Gender, BirthDate, Salary, DepartmnentId, HireDate, RelieveDate, Active)
VALUES ('Mary',NULL,'Smith','W',TO_DATE('18-DEC-1985'),2000.00,1,TO_DATE('06-MAY-2011'),NULL,1);
Error starting at line : 14 in command -
INSERT INTO Employee(FirstName, SecondName, LastName, Gender, BirthDate, Salary, DepartmnentId, HireDate, RelieveDate, Active)
VALUES ('Mary',NULL,'Smith','W',TO_DATE('18-DEC-1985'),'2000.00',1,TO_DATE('06-MAY-2011'),NULL,1)
Error report -
ORA-01858: tam, gdzie spodziewano się cyfry, znaleziono literę
Komentarze (11)
@Dalmierz_Ploza spróbuj zawęzić problem. Zrób inserta z dwiema kolumnami, z trzema itd do momentu aż wyskoczy błąd
Moja rada: Nigdy ale to przenigdy nie wpisuj daty bez maski. Narobisz sobie tym tylko kłopotów bo domyślny format różni się w zależności od klienta sql i jego ustawień regionalnych a czasami wcale nie rzuci błędem tylko wpisze jakieś głupoty do bazy
Zamiast:
'2011-05-06' lub TO_DATE('18-DEC-1985')
zrób:
to_date('18-DEC-1985','dd-mon-yyyy')
P.S. Data miała być moim drugim strzałem bo sprawdziłem na https://livesql.oracle.com że komendę masz poprawną 😉
Oracle Live SQLFeatured Scripts and Tutorials Introduction to SQL This tutorial provides an introduction to the Structured Query Language (SQL), learn how to create tables with primary keys, columns, constraints, ind... Tutorial SQL Macros - Creating...livesql.oracle.com@Dalmierz_Ploza panie, a w jakim języku masz sesję i w jakim formacie chcesz wstawiać daty? Bo jeśli nie ma matcha, to będziesz napierdalał głową w mur jak ja kiedyś xDD
INSERT INTO Employee(FirstName, SecondName, LastName, Gender, BirthDate, Salary, DepartmnentId, HireDate, RelieveDate, Active)
VALUES ('Mary',NULL,'Smith','W','1985-12-18',2000.00,1,'2011-05-06',NULL,1);
@warzone @mejwen @WolandWspanialy @Robert_Prawandowski @HrabiaKoniecpolski
Dobra, nie chce przyjąć do wiadomości swojego rzekomo standardowego formatu daty..
Miesiące mają być cyferkami pomimo tego, że wszędzie piszą, że powinny być literkowe.
@mejwen @warzone nosz k⁎⁎wa xD o co kaman, może coś z sqldeveloper..
@WolandWspanialy już próbowałem, mam kropeczkę jako znaczek floata
Na szybko odpaliłem w oraclowym livesqlu i działa
@Robert_Prawandowski @WolandWspanialy Możliwe, u mnie powyższe komendy działają bez zarzutu.
@Dalmierz_Ploza Jakie masz ustawione locale? Jaki OS?
Edit:
Dziwne, u mnie działa ¯_(ツ)_/¯
Może komputer się pomylił? Spróbuj ponownie.
A może 2000,00 zamiast 2000.00?
spróbuj
alter session set NLS_NUMERIC_CHARACTERS = '.,';