2010-03-25 3 views
1
undefine dates 

declare 
    v_dateInput VARCHAR(10); 
    v_dates DATE; 
begin 
    v_dateInput := &&dates; 
    v_dates := to_date(v_dateInput,'dd-mm-yyyy'); 
    DBMS_OUTPUT.put_line(v_dates); 
end; 

이 코드를 실행할 때마다 (예 : 03-03-1990)이 오류가 표시되는지 확실하지 않습니다.to_date function pl/sql

Error report: 
ORA-01847: day of month must be between 1 and last day of month 
ORA-06512: at line 6 
01847. 00000 - "day of month must be between 1 and last day of month" 
*Cause:  
*Action: 

답변

12

하, 좋은 것. & &가 현재 위치에서 변수를 바꾸기 때문에 스크립트가가되도록 즉,이다 :

declare 
    v_dateInput VARCHAR(10); 
    v_dates DATE; 
begin 
    v_dateInput := 03-03-1990; 
    v_dates := to_date(v_dateInput,'dd-mm-yyyy'); 
    DBMS_OUTPUT.put_line(v_dates); 
end; 

주 따옴표의 부재. 오라클은 03 - 03 - 1990의 숫자 값을 계산하기 때문에 사실상 v_dateInput은 '-1990'입니다. 물론 주어진 형식 문자열에 대해서는 작동하지 않습니다.

는 문제를 해결하려면, 당신은

날짜에 대한 값을 입력하라는 메시지가
v_dateInput := '&&dates'; 
+0

아, 무슨 멍청한 실수 야, 도와 줘서 고마워. – user297285

1

당신이 작은 따옴표, 예를 들어,에 넣어 있는지 확인 필요

Enter value for dates: '03-03-1990' 

공유하고 즐기십시오.