2
我有一個名爲'F_SMART_DATE()'的Oracle 10g函數,它返回標量DATE。它接受一個VARCHAR2參數,該參數可以是日期字符串(例如'2011-01-01','3/29/1966')或'智能'日期(例如'm-1'(一個月前),' yb-0「(本年度開始))。將Crystal Report命令參數傳遞給Oracle函數
當我在SQL Developer中執行的功能,它按預期工作:
--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」:無效標識符[數據庫供應商代碼: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; –