Oracle 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ę
WolandWspanialy

spróbuj


alter session set NLS_NUMERIC_CHARACTERS = '.,';

Robert_Prawandowski

A może 2000,00 zamiast 2000.00?

HrabiaKoniecpolski

Może komputer się pomylił? Spróbuj ponownie.

warzone

@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 ¯_(ツ)_/¯

mejwen

Na szybko odpaliłem w oraclowym livesqlu i działa

3652c3a3-c420-4723-8159-71ec5f5564b1
Dalmierz_Ploza

@mejwen @warzone nosz kurwa xD o co kaman, może coś z sqldeveloper..


@WolandWspanialy już próbowałem, mam kropeczkę jako znaczek floata

Dalmierz_Ploza

@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.

Dalmierz_Ploza

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);

Mikry_Mike

@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

WolandWspanialy

@Dalmierz_Ploza


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ą

Robert_Prawandowski

@Dalmierz_Ploza spróbuj zawęzić problem. Zrób inserta z dwiema kolumnami, z trzema itd do momentu aż wyskoczy błąd

Zaloguj się aby komentować