2011-07-28 7 views
2

スカラー日付を返す「F_SMART_DATE()」という名前のOracle 10g関数があります。これは、日付文字列(たとえば '2011-01-01'、 '3/29/1966')または 'スマート'日付(たとえば 'm-1'(1か月前))、 yb-0 '(今年の初め))。私はSQL Developerの機能を実行するとCrystalレポートのコマンドパラメータをOracle関数に渡します。

は、それが期待どおりに動作:

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

私は同じ構文を使用して、CommandオブジェクトとCrystalレポートを作成する場合は、期待どおりに動作します。

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に変更されます。 –

関連する問題