宏函数prompt()中date类型的参数如何设置默认值?

我在宏函数里定义了两个参数STARTDATE和ENDDATE,T.DAYCODE为date类型,我想给这两个参数各自设置一个默认值,STARTDATE默认值为当前系统日期往前推7天,ENDDATE默认值为当前系统日期,验证SQL时报错,报错请看截图,我的数据库为Oracle,哪位大神帮解决一下,谢谢!SELECT B.USERNAME, ...显示全部
我在宏函数里定义了两个参数STARTDATE和ENDDATE,T.DAYCODE为date类型,我想给这两个参数各自设置一个默认值,STARTDATE默认值为当前系统日期往前推7天,ENDDATE默认值为当前系统日期,验证SQL时报错,报错请看截图,我的数据库为Oracle,哪位大神帮解决一下,谢谢!

SELECT B.USERNAME,
       T.USERCODE,
       C.TYPENAME1 AS TASKTYPENAME,
       C.TYPECODE1 AS TASKTYPECODE,
       SUM(NVL(T.REALWORKTIME * (T.PROPORTION / 100), 0)) AS WORKTIME
  FROM F_WORKREPORT T, D_USER B, D_TASKTYPE C
WHERE T.TASKTYPECODE = C.TASKTYPECODE
   AND T.USERCODE = B.USERCODE
   AND C.TASKTYPECODE <> '19'
   AND (to_char(T.DAYCODE,'yyyy-mm-dd') BETWEEN #prompt('STARTDATE','string',to_char((sysdate-7),'yyyy-mm-dd'))# AND #prompt('ENDDATE','string',to_char((sysdate),'yyyy-mm-dd'))#)
GROUP BY
          B.USERNAME,
          T.USERCODE,
          C.TYPENAME1,
          C.TYPECODE1


另外,我把条件AND (to_char(T.DAYCODE,'yyyy-mm-dd') BETWEEN #prompt('STARTDATE','string',to_char((sysdate-7),'yyyy-mm-dd'))# AND #prompt('ENDDATE','string',to_char((sysdate),'yyyy-mm-dd'))#)改为N种写法:
1、T.DAYCODE BETWEEN to_date(#prompt('STARTDATE','string',to_char((sysdate-7),'yyyy-mm-dd'))#,'yyyy-mm-dd')
      AND to_date(#prompt('ENDDATE','string',to_char((sysdate),'yyyy-mm-dd'))#,'yyyy-mm-dd')



2、T.DAYCODE BETWEEN #prompt('STARTDATE','date',to_date(to_char(sysdate-7,'yyyy-mm-dd'),'yyyy-mm-dd'))# AND #prompt('ENDDATE','date',to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'))#


还是验证不通过。收起
参与8

查看其它 5 个回答zhonghanquan的回答

zhonghanquanzhonghanquan业务部门经理信和汇诚
回复 2# 流淌Wow


   两种方式我都试了,用string方式时,条件改为AND (to_char(T.DAYCODE,'yyyymmdd') BETWEEN #prompt('STARTDATE','string','to_char(sysdate-7,''yyyymmdd'')')#
            AND #prompt('ENDDATE','string','to_char(sysdate,''yyyymmdd'')')#)
验证通过,初始执行报表也有值,再次点击查询时报表没有值了。


用date方式时,条件改为
AND (T.DAYCODE BETWEEN #prompt('STARTDATE','date','sysdate-7')# AND #prompt('ENDDATE','date','sysdate')#)
验证也通过,初始执行报表也有值,再次点击查询时报表报 ORA-00932: 数据类型不一致: 应为 DATE, 但却获得 NUMBER RQP-DEF-0149 查询规范不正确。


DAYCODE是date类型,对了,请问日期提示对象传过来的日期值是什么类型?string还是date?
互联网服务 · 2015-03-12
浏览2069

回答者

zhonghanquan
业务部门经理信和汇诚
擅长领域: 大数据商业智能服务器

zhonghanquan 最近回答过的问题

回答状态

  • 发布时间:2015-03-12
  • 关注会员:1 人
  • 回答浏览:2069
  • X社区推广