필자는 '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;
을, 나는 매개 변수 대화 상자에서 인용 부호를 제거 할 수있을 것입니다.
댓글을 게시 한 후 동일한 해결책을 찾았습니다. – craig
및 전달 매개 변수가 Date 형식 (varchar2 대신) 인 경우 sql은 SELECT F_SMART_DATE ({? AS_OF_DATE})와 동일하거나 변경됩니다. SMART_DATE FROM DUAL; –