当前位置: 代码迷 >> Oracle开发 >> oracle 存储过程 输出结果集,使用package遇到的有关问题,在线
  详细解决方案

oracle 存储过程 输出结果集,使用package遇到的有关问题,在线

热度:24   发布时间:2016-04-24 06:54:19.0
oracle 存储过程 输出结果集,使用package遇到的问题,在线求助。
本帖最后由 zdp0350543 于 2013-10-17 11:06:10 编辑
想通过oracle写个存储过程查询记录集,貌似直接写不行,再网上找到用包写的方法,模仿写出一个,如下:
--声明包头
CREATE OR REPLACE PACKAGE PACK_defectsCount AS
  TYPE CUR_defectsCount IS REF CURSOR;
  PROCEDURE up_defectsCount(startdate in date,
                            enddate   in date,
                            p_cur     out CUR_defectsCount);
END PACK_defectsCount;

--声明包体
CREATE OR REPLACE PACKAGE BODY PACK_defectsCount AS
PROCEDURE up_defectsCount(startdate in date, enddate in date, p_cur out CUR_defectsCount) IS
sqlString varchar2(1000);
BEGIN
sqlString := 'SELECT
          '''' abbreviation,
          '''' FindCount,
          '''' CompleteCount,
          '''' OvertimeCount,
          '''' CompleteRate,
          '''' FindCount1,
          '''' CompleteCount1,
          '''' OvertimeCount1,
          '''' CompleteRate1,
          '''' FindCount2,
          '''' CompleteCount2,
          '''' OvertimeCount2,
          '''' CompleteRate2,
          '''' FindCount3,
          '''' CompleteCount3,
          '''' OvertimeCount3,
          '''' CompleteRate3
    FROM dual
    WHERE startdate =: startdate
      AND enddate =: enddate';
    OPEN p_cur FOR sqlString USING startdate,enddate;
END up_defectsCount;
END PACK_defectsCount;


查看 测试时,传入startdate,enddate,执行一直报错:"enddate":标识符无效,黄色标识是标在
 OPEN p_cur FOR sqlString USING startdate,enddate;
这行,求助我这哪里写的有问题吗,折腾好久了,关于这个的例子也不是很多,灰常捉急。
oracle cursor 存储

------解决方案--------------------
dual中没有startdate和enddate这两个字段。
------解决方案--------------------
:= 是pl/sql的赋值操作
:A 是绑定变量。

where :A = :A 是不行的。

你可以把dual后面的条件改成 where to_date('2013/10/17','yyyy/mm/dd') = :startdate 之类。
  相关解决方案