游标返回多行

时间:2010-01-13 19:41:13

标签: c# .net database oracle plsql

过去几天我一直在研究这个问题,我找不到自己的方法。我有一个需要在屏幕上打印报告的C#Web应用程序。该应用程序在数据库(Oracle)上调用存储过程并返回游标。这是程序

PROCEDURE report_total(beginDate IN DATE, endDate IN DATE, c OUT REF CURSOR)
AS
BEGIN
   OPEN
      c
   FOR
      SELECT
          month
          ,sum(field1)
          -- + a lot of other fields
      FROM
          view1 v
      WHERE
          beginDate <= v.date
          AND v.Date < endDate
      GROUP BY
          month
END;

这很好用,它每个月给我一个field1(和其他)的总和。假设您至少输入一个完整的年份范围,最多可以输入12行。 Howhever。我想做一些类似的存储过程,它会给我这几个月的详细信息。

假设beginDate ='2003-01-01'和endDate ='2005-01-05'(YYYY-MM-DD),我需要25行。每月一个,每年一个。我希望用光标OUT获得这些结果。如果您有一个不涉及光标的最简单的想法,请建议我。

1 个答案:

答案 0 :(得分:0)

SELECT  TRUNC(v.date, 'MONTH'), SUM(field1)
FROM    view1 v
WHERE   v.date BETWEEN beginDate and endDate
GROUP BY
        TRUNC(v.date, 'MONTH')