수치를 지정해야 할 위치에 비수치 문자가 지정되었습니다. 0 15 4,021

by 하혜진 [2008.05.02 23:07:55]



CREATE TABLE employees
(
EMPLOYEE_ID NUMBER(6) NOT NULL,
FIRST_NAME VARCHAR2(20),
LAST_NAME VARCHAR2(25) NOT NULL,
EMAIL VARCHAR2(25) NOT NULL,
PHONE_NUMBER VARCHAR2(20),
HIRE_DATE DATE NOT NULL,
JOB_ID VARCHAR2(10) NOT NULL,
SALARY NUMBER(8,2),
COMMISSION_PCT NUMBER(2,2),
MANAGER_ID NUMBER(6),
DEPARTMENT_ID NUMBER(4)
);

 

이렇게 입력을 해서 테이블 생성을 했습니다.

문제는.. insert문을 이용해서 데이터를 넣어야 하는데 여기서 자꾸 문제가 생깁니다.

수치를 지정해야 할 위치에 비수치 문자가 지정되었습니다.

라고 뜨는군요 ㅜㅜ

 

INSERT INTO EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,DEPARTMENT_ID)
VALUES
(100,'Steven','King','SKING','515.123.4567','17-JUN-87','AD_PRES',24000,90);

 

이렇게 입력을 했는데.. 대체 어디가 틀렸는지 모르겠네요

고수님들!!! 좀 알려주세요 ^^

 

아래 첨부파일은 문제생긴다는 그 부분을 캡쳐한겁니다.

by 손님 [2008.05.03 09:03:06]
날짜 입력한 부분에 format을 의무적으로 주는게 좋습니다.
to_date(날짜, format)

by 현 [2008.05.05 01:19:09]
날짜 부분에서 딱 걸렸네요.
*표시가 되어 있군요.
형식에 맞추어서 입력하시면 됩니다....

by 된장 [2008.05.06 09:58:32]
걍..session를 바꾸삼.
alter session set nls_date_format='dd-mon-yy';
아마도 script를 돌리려고 하는데 문제가 되니까
한행만 떼어서 실행하려고 한 것 같은데
script 실행부분에 위의 명령을 한번 주고 실행해보삼..~~..
실행될 꺼에여.

by 웅 [2008.05.06 10:38:16]
데이트형 컬럼인데 스트링으로 입력하려고 해서 그래요..
'17-JUN-87' - > to_date('17-jun-89','dd-mon-rr')
그래도 데이트 포맷은 신경쓰셔야 되겠네요...입력년도가 2000년대인지 아니지 신경을...

by 하혜진 [2008.05.06 14:09:20]
아 다양한 답변들 감사합니다. 날짜는 특별히 더욱 신경을 써야하는군요 ^^
그런데 아직도 안되는군요 하하하 세션을 바꾸어보고.. TO_DATE('17-JUN-89','dd-mon-yy') 을 했는데 이번에는 지정한 월이 부적합하다고 뜨네요 ㅜㅜ

by 채용근 [2008.05.06 14:30:52]
10g인가보네요 TO_DATE ( '17-01-87', 'dd-mm-rr' ) 로 입력하면 문제 되는게 있나요.

by 하혜진 [2008.05.06 14:51:31]
네 10g입니다. 드디어 해결을 했답니다 ^^ 답변감사합니다 ^^ 문제는 NLS셋팅이 달라서 그랬더라구요 TO_DATE('21-JAN-01','DD-MON-RR', 'nls_date_language=AMERICAN') 이렇게 입력하니까 되더라구요 다른 고수님들로 인해 데이트 포맷에 대해 많이 알았습니다 ^^

by 된장 [2008.05.06 15:00:55]
지금 해결해서 왔는뎅..ㅋㅋ...
이렇게 해도 되요...
alter session set nls_language='AMERICAN';
alter session set nls_date_format=''dd-mon-yy';
이렇게 2개 명령을 주고 스크립트 실행시키면
to_date 사용안해도 됩니다.ㅋ.ㅋ.

by 하혜진 [2008.05.06 15:22:00]
앗 된장님 그러신가요? ^^ 저도 그렇게 해보겠습니다. ㅋㅋ 제가 올린대로 하니까 입력은 되는데 검색해보니까 17-6월-89 이렇게 결과가 나오더군요;; 덜덜덜 왜그런거지.. 난 영어로 했는데;; ㅋㅋ 일단!! 해볼게욤! ㅋㅋ

by 하혜진 [2008.05.06 15:25:29]
된장님 말대로 하니까 원하는 결과가 나오네요!!!! 감사감사 +ㅁ+ 앞으로 친하게 지내요 ㅋㅋ 모르는 거 있음 좀 ㅜㅜ 물어보게요 ㅋㅋㅋㅋ 가르쳐주세요~ ㅋㅋ 전 초짜라 -_-;; 좁쌀만큼의 지식이라고나 ㅋㅋ

by 하혜진 [2008.05.06 15:30:10]
아 그게 그 차이군요! >ㅁ< 오옷 새로운 걸 배워가네요 ^^

by 된장 [2008.05.06 15:30:49]
System이나 Session을 바꾸지 않는 이상은 한글로 표시되져.ㅋ.ㅋ.
to_date사용하더라도...안되네요..session에 따라 표시되니깐요..ㅋㅋ

by 하혜진 [2008.05.06 15:31:33]
네 TO_DATE 는 insert구문에 일일이 다 적어줘야하더라구요 그래서 영구적으로 데이트포맷을 바꾸는 방법을 찾아서 바꿀려고 하니까 훨씬 쉬운;; 세션변경방법을 꼬리말로 달아주셔서!! 완성!! ㅋㅋㅋ

by 된장 [2008.05.06 15:54:08]
영구적으로 바꾸기는 쉽습니다..
init.ora 파일(파일명은 각각 다 다름)을 찾아서 그안에 내용을 TEXT편집기로 열어서밑에와 같이 해주면 oracle 재기동시에 자동으로 적용됩니다..

by 하혜진 [2008.05.06 16:14:42]
네 ^^ 찾아보니 제 컴에 있는 파일 이름도 inti.ora더라구요 여튼 알려줘서 감사드려용 ㅋ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입