2011-07-28 5 views
2

필자는 'F_SMART_DATE()'라는 이름의 Oracle 10g 함수가 있으며이 함수는 스칼라 날짜를 반환합니다. 날짜 문자열 (예 : '2011-01-01', '3/29/1966') 또는 '스마트'날짜 (예 : 'm-1'(한 달 전)) 인 단일 VARCHAR2 매개 변수를 허용합니다. yb-0 '(현재 연도의 시작)). 나는 SQL Developer의 기능을 실행하면Crystal 보고서 명령 매개 변수를 Oracle 함수에 전달

, 그것은 예상대로 작동합니다

--return 28-JUL-11 
SELECT F_SMART_DATE('M-1') SMART_DATE FROM DUAL; 

나도 같은 구문을 사용하여 Command 개체와 크리스탈 보고서를 작성하는 경우, 예상대로 작동합니다.

Command 개체 ('AS_OF')에서 String 매개 변수를 만들고 함수에 전달하려고하면 문제가 발생합니다.

Command 개체의 텍스트 : 내가 읽고 오류가

내가 전달하는 경우
--reference Oracle function 
SELECT F_SMART_DATE({?AS_OF}) SMART_DATE FROM DUAL; 

, M-1 (단일 인용 부호없이) : '데이터베이스에서 데이터를 검색하지 못했습니다. 세부 정보 : ORA-00904 : "M": 유효하지 않은 식별자 [Database Vendor Code : 904] '.

'M-1'(작은 따옴표 포함)을 전달하면 호출이 예상대로 작동합니다.

불행하게도,이 구문 변종 중 하나가 작동하지 않습니다 이상적으로

SELECT F_SMART_DATE(''' || {?AS_OF} || ''') SMART_DATE FROM DUAL; 

SELECT F_SMART_DATE(''({?AS_OF})'') SMART_DATE FROM DUAL; 

을, 나는 매개 변수 대화 상자에서 인용 부호를 제거 할 수있을 것입니다.

답변

3

이 작업을 수행합니다

SELECT F_SMART_DATE('{?AS_OF}') SMART_DATE FROM DUAL; 

내가 Crystal Reports를 사용했습니다 이후 오랜만이야,하지만 내 기억으로 매개 변수는 더 바인드 변수보다는 매크로처럼 작동합니다.

+0

댓글을 게시 한 후 동일한 해결책을 찾았습니다. – craig

+0

및 전달 매개 변수가 Date 형식 (varchar2 대신) 인 경우 sql은 SELECT F_SMART_DATE ({? AS_OF_DATE})와 동일하거나 변경됩니다. SMART_DATE FROM DUAL; –

관련 문제