2011-02-03 3 views
1

Oracle에서 간단한 함수를 실행하고 싶습니다.간단한 Oracle 쿼리 : literal이 형식 문자열과 일치하지 않습니다.

CREATE OR REPLACE FUNCTION NewCaseListForValidation 
(
          p_fromDate in DATE, 
          p_toDate in DATE, 
          p_rowCount in INT 
) 
RETURN 
          SYS_REFCURSOR 
IS 
          return_value SYS_REFCURSOR; 
... 

내가 그것을 실행 할 수 있어야한다 : 다음과 같이 서명이 정의

var rc refcursor 
exec :rc := newcaselistforvalidation('2010-01-01','2011-01-01',100); 
print :rc 

그러나 "newcaselistforvalidation를 입력 할 때 ('2010-01-01', '2011-01-01

ERROR at line 1: 
ORA-01861: literal does not match format string 
ORA-06512: at line 1 

내가 좀 봤 그리고 내가 올바른 형식으로 날짜를 입력 알아낼 수 없습니다 것 같다 ', 100) "나는 얻을. 누구든지 나를 도울 수 있습니까?

답변

10
Oracle-에서

쿼리 NLS_PARAMETERS 당신이 다음 DB가에 날짜를 받아들이는 형식을 확인할 수있을 것입니다 일반적으로

내가 TO_DATE() 함수를 사용하지만 :.

to_date('01-01-2011','DD-MM-YYYY'); 

영국에서 정을 내 날짜를 입력하십시오.

4

TO_DATE에 대한 대안() 함수는 ANSI 표준 DATE 또는 TIMESTAMP 리터럴 형식을 사용하는 것입니다 : 항상 ISO 규칙 (YYYY-MM-DD와 24시간 형식을 사용하여 지정됩니다

DATE '2010-01-31' 
TIMESTAMP '2010-01-31 21:22:23'

날짜와 시간을 for time)

이것은 다른 많은 (표준 호환) DBMS에서도 작동합니다.

1

이것이 또 다른 NLS_DATE_FORMAT과 ENV에 함수 휴식를 만들 것입니다 NLS_PARAMETERS 설정, 원인에 특정 값에 의존하지 않는 것이 좋습니다.

exec :rc := newcaselistforvalidation(to_date('2010-01-01','YYYY-MM-DD'),to_date('2011-01-01','YYYY-MM-DD'),100); 
0

INSERT INTO tblDate (dateStart) 값 ('20 -JUN 2013 ') 위의 질문에 대해 답 제안

나는 명시 적으로 함수에서 날짜 형식를 지정 거라고; 월 정수를 문자열로 변경하면 'DD-MON-YYYY'는 DATE 식별자가 붙지 않아도 유효한 데이터 문자열로 작동합니다.

관련 문제