next_in_line.sql

来自「Oracle PLSQL for DBAs 源代码」· SQL 代码 · 共 45 行

SQL
45
字号
CREATE TYPE next_o AS OBJECT ( summary_value NUMBER );
/
CREATE TYPE next_t AS TABLE OF next_o;
/
CREATE OR REPLACE FUNCTION next_in_line ( p_curs SYS_REFCURSOR )
                  RETURN next_t
                  PIPELINED IS

   /*
      || Demonstrate nested table functions
   */

   v_ret_val next_t := next_t( );

   -- local variables for cursor results
   v_on NUMBER;
   v_dt VARCHAR2(1);
   v_yr NUMBER;
   v_qt NUMBER;
   v_mt NUMBER;

BEGIN

  -- for all date components from the cursor...
  LOOP

    FETCH p_curs INTO v_on, v_dt, v_yr, v_qt, v_mt;
    EXIT WHEN p_curs%NOTFOUND;

    -- pipe out the sum of the components
    PIPE ROW(next_o(v_on + v_yr + v_qt + v_mt));

  END LOOP; -- every date component

 RETURN;

END;
/

SELECT *
  FROM TABLE(next_in_line(CURSOR(SELECT *
                                   FROM TABLE(date_parse(CURSOR(SELECT *
                                                                  FROM orders))))))
/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?