No sum for interval day to second?

Posted on október 30, 2009. Filed under: Uncategorized | Značky:, , , , |

I just wonder why ORACLE didn’t implement sum of interval day to second datatype.

CREATE OR REPLACE TYPE sum_interval AS OBJECT
(

/* type implements oracles data cartridge interface to compute sum of day to second interval values */

   duration INTERVAL DAY TO SECOND, --duration accumulator

   CONSTRUCTOR FUNCTION sum_interval RETURN SELF AS RESULT
      PARALLEL_ENABLE,

   STATIC FUNCTION odciaggregateinitialize(ctx IN OUT sum_interval) RETURN NUMBER,

   MEMBER FUNCTION odciaggregateiterate
   (
      SELF  IN OUT sum_interval,
      VALUE IN INTERVAL DAY TO SECOND
   ) RETURN NUMBER,

   MEMBER FUNCTION odciaggregatedelete
   (
      SELF  IN OUT sum_interval,
      VALUE IN INTERVAL DAY TO SECOND
   ) RETURN NUMBER,

   MEMBER FUNCTION odciaggregateterminate
   (
      SELF        IN sum_interval,
      returnvalue OUT INTERVAL DAY TO SECOND,
      flags       IN NUMBER
   ) RETURN NUMBER,

   MEMBER FUNCTION odciaggregatemerge
   (
      SELF IN OUT sum_interval,
      ctx  IN sum_interval
   ) RETURN NUMBER
)
;
/

CREATE OR REPLACE TYPE BODY sum_interval IS

   ------------------------------------------------------------------------------------------------- 
   CONSTRUCTOR FUNCTION sum_interval RETURN SELF AS RESULT
      PARALLEL_ENABLE IS
   BEGIN
      RETURN;
   END sum_interval;
   
   ------------------------------------------------------------------------------------------------- 
   STATIC FUNCTION odciaggregateinitialize(ctx IN OUT sum_interval) RETURN NUMBER IS
   BEGIN
      ctx := sum_interval();
      RETURN odciconst.success;
   END odciaggregateinitialize;
   
   ------------------------------------------------------------------------------------------------- 
   MEMBER FUNCTION odciaggregateiterate
   (
      SELF  IN OUT sum_interval,
      VALUE IN INTERVAL DAY TO SECOND
   ) RETURN NUMBER IS
   BEGIN
      IF SELF.duration IS NULL THEN
         SELF.duration := VALUE;
      ELSE
         SELF.duration := SELF.duration + VALUE;
      END IF;
      RETURN odciconst.success;
   END odciaggregateiterate;
   
   ------------------------------------------------------------------------------------------------- 
   MEMBER FUNCTION odciaggregateterminate
   (
      SELF        IN sum_interval,
      returnvalue OUT INTERVAL DAY TO SECOND,
      flags       IN NUMBER
   ) RETURN NUMBER IS
   BEGIN
      returnvalue := SELF.duration;
      RETURN odciconst.success;
   END odciaggregateterminate;
   
   ------------------------------------------------------------------------------------------------- 
   MEMBER FUNCTION odciaggregatedelete
   (
      SELF  IN OUT sum_interval,
      VALUE IN INTERVAL DAY TO SECOND
   ) RETURN NUMBER IS
   BEGIN
      SELF.duration := SELF.duration - VALUE;
      RETURN odciconst.success;
   END odciaggregatedelete;
   
   ------------------------------------------------------------------------------------------------- 
   MEMBER FUNCTION odciaggregatemerge
   (
      SELF IN OUT sum_interval,
      ctx  IN sum_interval
   ) RETURN NUMBER IS
   BEGIN
      IF ctx.duration IS NULL THEN
         NULL;
      ELSE
         SELF.duration := SELF.duration + ctx.duration;
      END IF;
      RETURN odciconst.success;
   END odciaggregatemerge;
   
END;
/

create or replace function fce_sum_interval(duration interval day to second) return interval day to second
  parallel_enable
  aggregate using sum_interval;
/

select fce_sum_interval(numtodsinterval(level, 'minute')) from dual connect by level <= 10;

Reklamy
Read Full Post | Make a Comment ( None so far )

  • Co prave robim

    • 【「七つの大罪 聖戦の予兆」コラボ開催!】メリオダス、ディアンヌ、バン、キング、ゴウセルがモンストに登場!ギルサンダー、ヘルブラム、ヘンドリクセン等がクエストに出現!伝説の騎士団<七つの大罪>と共に闘おう! #モンスト xfl.ag/2vTgQ8F 1 day ago
    • 【「#ナツの極み。」キャンペーン】海やプールで、夏の限定ガチャが無料で引ける「ナツ玉」がもらえる!?さらに、“運極”作るとサーティワンのアイスが99%当たる!モンストで、一緒に“ナツ”を極めよう! #モンスト xfl.ag/2vExw3Q 1 month ago
    • 【鋼の錬金術師 FAコラボ開催!】エルリック兄弟、ロイ・マスタング、リン・ヤオ、リザ・ホークアイがモンストにやってきた!スカー、エンヴィー、グリードがクエストに出現!“錬金術師”達と共に闘おう! #ハガレンモンスト #モンスト bit.ly/2sNPPBR 2 months ago
    • 映画『パイレーツ・オブ・カリビアン/最後の海賊』とのコラボ開催中!金と銀の“ジャック・スパロウ“をゲットで「パイレーツ缶」が当たるキャンペーンも!ジャック・スパロウと一緒にモンストで冒険しよう! #モンスト #パイレーツモンスト xfl.ag/2re67pF 2 months ago
    • 【リアル版 超・獣神祭『#十二支再競争』】本物のネズミやトラが走る「十二支伝説」のやり直し競争!?1着的中で投票したオーブの10倍のオーブGET!更に1&2着を的中で総額3億円分を山分け!どの動物に投票する? #モンスト xfl.ag/2r8817u 2 months ago
    • 「映画ドラえもん」コラボキャラを“運極”したいな!ミッションでキャラが入手しやすいからできるかも!レアなプレゼントが貰える「運極カチコチ大作戦キャペーン」もあるから、みんなも挑戦してみてね! #モンスト #モンストドラえもん xfl.ag/2lG0kab 6 months ago
    • 年末年始もモンスト!大晦日に「年末BIGボーナスくじ」でオーブ5個届く&総額1億円が当たる!大晦日と元旦はログインでオーブ合計20個!元旦より超・獣神祭の限定新キャラ「パンドラ」登場! #モンストやるなよ #モンスト xfl.ag/2fKD1ot 8 months ago
    • 「幽☆遊☆白書」コラボ開催!モンストに浦飯幽助、蔵馬、飛影、桑原和真、幻海が登場!登場キャラボイスは全て録りおろし!”伊達にあの世は見てねぇぜ!”幽助達と一緒に「暗黒武術会」に挑め! #モンスト #幽白モンスト xfl.ag/2fcrlwu 10 months ago
  • Meta

  • Kategórie

Liked it here?
Why not try sites on the blogroll...