2011-11-01 4 views
0

내 PHP 오류 로그를 살펴보면 특정 저장 프로 시저와 관련된 ORA-01858 오류 항목을 자주 보게됩니다. 이 오류 코드에 대한 검색에서 알 수 있듯이 항상 잘못된 입력을 TO_CHAR() 함수에 전달한 결과입니다. 문제는, 문제의 저장 프로 시저가 하나의 TO_CHAR() 함수 만 가지고 있고 전달하는 값이 실제로 하드 코딩되어 있다는 것입니다. . (그것은 NVL()의 두 번째 매개 변수입니다 여기에 코드입니다 : 그 이유는 ORA-01858 오류가 될 것이다,이 과정에서 TO_DATE()의 유일한 사용되는으로이상한 ORA-01858 오류

ROUND(SYSDATE - NVL(PENDING_CLOSE_DT, TO_DATE('2000-01-01','YYYY-MM-DD')), 7) AS PENDING_DURATION 

인가가 일부 다른 시나리오 어디에서 그런 오류를 생성 할 수 있습니까? 문제의 일부는 때로는 발생하는 것입니다. 일반적으로이 저장 프로 시저를 사용하는 프로그램은 정상적으로 작동하며 오류 로그를 확인하는 것만으로도 알 수 있습니다.

+0

어떤 버전 당신은 데이터베이스를 사용하고 있습니까? PENDING_CLOSE_DT에 DATE 데이터 유형이 있다고 가정합니다. 오류 번호가 줄 번호 나 컨텍스트와 같은 추가 정보를 제공합니까? 예를 들어 PENDING_CLOSE_DT가 null 인 경우에만 오류가 발생하는지 여부. – APC

+1

오류가 발생했음을 알 수있는 유일한 이유는 로그 파일을 보는 것입니다. 즉,이 서브 루틴이 실패하면 실패하지 않으며, 분명히 필요하지 않습니다. 그럼 그냥 뜯어 내세요. – APC

+1

NLS_DATE_FORMAT와 일치하지 않는'TO_DATE()'와 형식 마스크가없는'PENDING_CLOSE_DT = '2000-01-01'과 같은 암시적인 날짜 변환이 있습니까? –

답변

0

to_date() 행에 아무 문제가 없으므로 오류를 줄 수있는 to_char() 함수가있을 수 있습니까?