通过Excel调用Oracle SQL参数不能读取

我有在OracleSQLDeveloper中完美工作的SQL。

SQL的基础:拉一天,定义一个月的一天,然后提供有关date的class次和小时数。

我正在尝试使3date参数,所以我可以dynamic地改变它们。

SQL:

select t.*, dsp.day_work_hours as SHIFT from (select employee, decode( extract(day from date '2016-05-17'), 1, day_1, 2, day_2, 3, day_3, 4, day_4, 5, day_5, 6, day_6,7, day_7,8, day_8,9, day_9,10, day_10, 11, day_11, 12, day_12, 13,day_13, 14,day_14,15,day_15,16,day_16,17,day_17,18,day_18,19,day_19,20,day_20,21,day_21,22,day_22,23,day_23,24,day_24,25,day_25,26,day_26,27,day_27,28,day_28,day_29,30,day_30,31,day_31) as day_shift from odb.location_site_emp_schl_tmplt where group_month = extract(month from date '2016-05-17') and group_year = extract(year from date '2016-05-17')) T inner join odb.daily_shift_pattern dsp on dsp.day_pattern = t.day_shift 

EXCEL细胞公式参考:

 =TEXT(today,"YYYY-MM-DD") 

Excel单元格显示完美,但如果我运行SQL参数它声明“expression式丢失”

任何想法,为什么这是行不通的?

没有Oracle方便testing这个,我会认为这个问题是Excel存储date为一个整数值。 所以,当显示看起来与SQL中的string匹配时,传递给参数化查询的实际值不会。

我的build议是使用3个参数,每个date,月份和年份。 除了提高性能(不提取date)之外,还将确保Excel与查询参数之间的值types匹配。

所以查询将如下所示:

 select t.*, dsp.day_work_hours as SHIFT from (select employee, decode( param1, 1, day_1, 2, day_2, 3, day_3, 4, day_4, 5, day_5, 6, day_6,7, day_7,8, day_8,9, day_9,10, day_10, 11, day_11, 12, day_12, 13,day_13, 14,day_14,15,day_15,16,day_16,17,day_17,18,day_18,19,day_19,20,day_20,21,day_21,22,day_22,23,day_23,24,day_24,25,day_25,26,day_26,27,day_27,28,day_28,day_29,30,day_30,31,day_31) as day_shift from odb.location_site_emp_schl_tmplt where group_month = param2 and group_year = param3) T inner join odb.daily_shift_pattern dsp on dsp.day_pattern = t.day_shift