表函数可接受查询语句或游标作为输入参数,并可输出多行数据。该函数可以平行执行,并可持续输出数据流,被称作管道式输出。应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表。
<wbr></wbr>
1. 用游标传递数据
利用游标 REF CURSOR 可将数据集(多行记录)传递到PL/SQL函数:
SELECT *
<wbr>FROM TABLE (myfunction (CURSOR (SELECT *<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>FROM mytab)));</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><strong>2. 利用两个实体化视图(或表)作为样板数据<br></strong><span style="color:#000080; word-wrap:normal; word-break:normal">CREATE MATERIALIZED VIEW sum_sales_country_mv<br> BUILD IMMEDIATE<br> REFRESH COMPLETE<br> ENABLE QUERY REWRITE<br> AS<br> SELECT<wbr><wbr>SUBSTR (s.calendar_month_desc, 1, 4) YEAR, c.country_id country,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>SUM (sum_amount_sold) sum_amount_sold<br><wbr><wbr><wbr>FROM sum_sales_month_mv s, customers c<br><wbr><wbr>WHERE s.cust_id = c.cust_id<br><wbr><wbr><wbr><wbr>AND c.country_id IN ('US', 'UK', 'FR', 'ES', 'JP', 'AU')<br> GROUP BY SUBSTR (s.calendar_month_desc, 1, 4), c.country_id;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></span></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
CREATE MATERIALIZED VIEW sum_es_gend_mv
BUILD DEFERRED
REFRESH FAST
ENABLE QUERY REWRITE
AS
SELECT<wbr><wbr>SUBSTR (s.calendar_month_desc, 1, 4) YEAR,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>s.calendar_month_desc cal_month, c.cust_gender,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>SUM (sum_amount_sold) sum_amount_sold<br><wbr><wbr><wbr>FROM sum_sales_month_mv s, customer c<br><wbr><wbr>WHERE s.cust_id = c.cust_id<br><wbr><wbr><wbr><wbr>AND c.country_id = 'ES'<br><wbr><wbr><wbr><wbr>AND sunstr (s.calendar_month_desc, 1, 4) = '2000'<br> GROUP BY SUBSTR (s.calendar_month_desc, 1, 4),<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>s.calendar_month_desc,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>c.cust_gender;<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><strong>3. 定义对象类型和基于对象类型的表类型<br></strong>定义对象类型并且为进一步引用做好准备。<br> (1)<span style="font-family:隶属; word-wrap:normal; word-break:normal">定义对象类型</span>:TYPE sales_country_t<br><span style="color:#000080; word-wrap:normal; word-break:normal">CREATE TYPE sales_country_t AS OBJECT (<br><wbr><wbr>YEAR<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>VARCHAR2 (4),<br><wbr><wbr>country<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2),<br><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER<br> );<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></span>(2)定义表类型:TYPE SUM_SALES_COUNTRY_T_TAB<br><span style="color:#000080; word-wrap:normal; word-break:normal">CREATE TYPE sum_sales_country_t_tab AS TABLE OF sales_country_t;<br></span>(3)定义对象类型:TYPE sales_gender_t<br><span style="color:#000080; word-wrap:normal; word-break:normal">CREATE TYPE sales_gender_t AS OBJECT (<br><wbr><wbr>YEAR<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>VARCHAR2 (4),<br><wbr><wbr>country_id<wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2),<br><wbr><wbr>cust_gender<wbr><wbr><wbr><wbr><wbr><wbr>CHAR (1),<br><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER<br> );<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></span>(4)定义表类型:TYPE SUM_SALES_GENDER_T_TAB<br><span style="color:#000080; word-wrap:normal; word-break:normal">CREATE TYPE sum_sales_gender_t_tab AS TABLE OF sales_gender_t;<br></span>(5)定义对象类型:TYPE sales_roll_t<br><span style="color:#000080; word-wrap:normal; word-break:normal">CREATE TYPE sales_roll_t AS OBJECT (<br><wbr><wbr>channel_desc<wbr><wbr><wbr><wbr><wbr>VARCHAR2 (20),<br><wbr><wbr>country_id<wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2),<br><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER<br> );<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></span>(6)定义表类型:TYPE SUM_SALES_ROLL_T_TAB<br><span style="color:#000080; word-wrap:normal; word-break:normal">CREATE TYPE sum_sales_roll_t_tab AS TABLE OF sales_roll_t;<br></span>(7)检查一下建立的类型<br><span style="color:#000080; word-wrap:normal; word-break:normal">SELECT object_name, object_type, status<br><wbr>FROM user_objects<br><wbr>WHERE object_type = 'TYPE';<br></wbr></wbr></span><wbr><br><strong>4. 定义包:Create package and define REF CURSOR<br></strong><span style="color:#000080; word-wrap:normal; word-break:normal">CREATE OR REPLACE PACKAGE cursor_pkg<br> IS<br><wbr><wbr>TYPE sales_country_t_rec IS RECORD (<br><wbr><wbr><wbr><wbr><wbr>YEAR<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>VARCHAR (4),<br><wbr><wbr><wbr><wbr><wbr>country<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2),<br><wbr><wbr><wbr><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER<br><wbr><wbr>);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></span></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>TYPE sales_gender_t_rec IS RECORD (<br><wbr><wbr><wbr><wbr><wbr>YEAR<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>VARCHAR2 (4),<br><wbr><wbr><wbr><wbr><wbr>country_id<wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2),<br><wbr><wbr><wbr><wbr><wbr>cust_gender<wbr><wbr><wbr><wbr><wbr><wbr>CHAR (1),<br><wbr><wbr><wbr><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER<br><wbr><wbr>);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>TYPE sales_roll_t_rec IS RECORD (<br><wbr><wbr><wbr><wbr><wbr>channel_desc<wbr><wbr><wbr><wbr><wbr>VARCHAR2 (20),<br><wbr><wbr><wbr><wbr><wbr>country_id<wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2),<br><wbr><wbr><wbr><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER<br><wbr><wbr>);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>TYPE sales_country_t_rectab IS TABLE OF sales_country_t_rec;</wbr></wbr>
<wbr><wbr>TYPE sales_roll_t_rectab IS TABLE OF sales_roll_t_rec;</wbr></wbr>
<wbr><wbr>TYPE strong_refcur_t IS REF CURSOR<br><wbr><wbr><wbr><wbr><wbr>RETURN sales_country_t_rec;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>TYPE row_refcur_t IS REF CURSOR<br><wbr><wbr><wbr><wbr><wbr>RETURN sum_sales_country_mv%ROWTYPE;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>TYPE roll_refcur_t IS REF CURSOR<br><wbr><wbr><wbr><wbr><wbr>RETURN sales_roll_t_rec;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>TYPE refcur_t IS REF CURSOR;<br> END corsor_pkg;</wbr></wbr>
<wbr></wbr>
5. 定义表函数
(1)定义表函数:FUNCTION Table_Ref_Cur_Week
CREATE OR REPLACE FUNCTION table_ref_cur_week (cur CURSOR.refcur_t)
<wbr><wbr>RETURN sum_sales_country_t_tab<br> IS<br><wbr><wbr>YEAR<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>VARCHAR (4);<br><wbr><wbr>country<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2);<br><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER;<br><wbr><wbr>objset<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>sum_sales_country_t_tab := sum_sales_country_t_tab ();<br><wbr><wbr>i<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NUMBER<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>:= 0;<br> BEGIN<br><wbr><wbr>LOOP<br> -- Fetch from cursor variable<br><wbr><wbr><wbr><wbr><wbr>FETCH cur<br><wbr><wbr><wbr><wbr><wbr><wbr>INTO YEAR, country, sum_amount_sold;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>EXIT WHEN cur%NOTFOUND;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>-- exit when last row is fetched<br> -- append to collection<br><wbr><wbr><wbr><wbr><wbr>i := i + 1;<br><wbr><wbr><wbr><wbr><wbr>objset.EXTEND;<br><wbr><wbr><wbr><wbr><wbr>objset (i) := sales_country_t (YEAR, country, sum_amount_sold);<br><wbr><wbr>END LOOP;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>CLOSE cur;</wbr></wbr>
<wbr><wbr>RETURN objset;<br> END;<br></wbr></wbr>/
(2)定义表函数:FUNCTION Table_Ref_Cur_Strong
CREATE OR REPLACE FUNCTION table_ref_cur_strong (cur cursor_pkg.strong_refcur_t)
<wbr><wbr>RETURN sum_sales_country_t_tab PIPELINED<br> IS<br><wbr><wbr>YEAR<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>VARCHAR (4);<br><wbr><wbr>country<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2);<br><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER;<br><wbr><wbr>i<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NUMBER<wbr><wbr><wbr><wbr><wbr>:= 0;<br> BEGIN<br><wbr><wbr>LOOP<br><wbr><wbr><wbr><wbr><wbr>FETCH cur<br><wbr><wbr><wbr><wbr><wbr><wbr>INTO YEAR, country, sum_amount_sold;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>EXIT WHEN cur%NOTFOUND;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>-- exit when last row fetched<br><wbr><wbr><wbr><wbr><wbr>PIPE ROW (sales_country_t (YEAR, country, sum_amount_sold));<br><wbr><wbr>END LOOP;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>CLOSE cur;</wbr></wbr>
<wbr><wbr>RETURN;<br> END;<br></wbr></wbr>/
(3)定义表函数:FUNCTION Table_Ref_Cur_row
CREATE OR REPLACE FUNCTION table_ref_cur_row (cur cursor_pkg.row_refcur_t)
<wbr><wbr>RETURN sum_sales_country_t_tab PIPELINED<br> IS<br><wbr><wbr>in_rec<wbr><wbr><wbr>cur%ROWTYPE;<br><wbr><wbr>out_rec<wbr><wbr>sales_country_t := sales_country_t (NULL, NULL, NULL);<br> BEGIN<br><wbr><wbr>LOOP<br><wbr><wbr><wbr><wbr><wbr>FETCH cur<br><wbr><wbr><wbr><wbr><wbr><wbr>INTO in_rec;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>EXIT WHEN cur%NOTFOUND;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>-- exit when last row is fetched<br><wbr><wbr><wbr><wbr><wbr>out_rec.YEAR := in_rec.YEAR;<br><wbr><wbr><wbr><wbr><wbr>out_rec.country := in_rec.country;<br><wbr><wbr><wbr><wbr><wbr>out_rec.sum_amount_sold := in_rec.sum_amount_sold;<br><wbr><wbr><wbr><wbr><wbr>PIPE ROW (out_rec);<br><wbr><wbr>END LOOP;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>CLOSE cur;</wbr></wbr>
<wbr><wbr>RETURN;<br> END;<br></wbr></wbr>/
(4)定义表函数:FUNCTION Gender_Table_Ref_Cur_Week
CREATE OR REPLACE FUNCTION gender_table_ref_cur_week (cur cursor_pkg.refcur_t)
<wbr><wbr>RETURN sum_sales_gender_t_tab<br> IS<br><wbr><wbr>YEAR<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>VARCHAR2 (4);<br><wbr><wbr>country_id<wbr><wbr><wbr><wbr><wbr><wbr><wbr>CHAR (2);<br><wbr><wbr>cust_gender<wbr><wbr><wbr><wbr><wbr><wbr>CHAR (1);<br><wbr><wbr>sum_amount_sold<wbr><wbr>NUMBER;<br><wbr><wbr>objset<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>sum_sales_gender_t_tab := sum_sales_gender_t_tab ();<br><wbr><wbr>i<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NUMBER<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>:= 0;<br> BEGIN<br><wbr><wbr>LOOP<br><wbr><wbr><wbr><wbr><wbr>FETCH cur<br><wbr><wbr><wbr><wbr><wbr><wbr>INTO YEAR, country_id, cust_gender, sum_amount_sold;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>EXIT WHEN cur%NOTFOUND;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>-- exit when last row is fetched<br><wbr><wbr><wbr><wbr><wbr>i := i + 1;<br><wbr><wbr><wbr><wbr><wbr>objset.EXTEND;<br><wbr><wbr><wbr><wbr><wbr>objset (i) :=<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>sum_sales_gender_t (YEAR, country_id, cust_gender, sum_amount_sold);<br><wbr><wbr>END LOOP;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>CLOSE cur;</wbr></wbr>
<wbr><wbr>RETURN objset;<br> END;<br></wbr></wbr>/
6. 调用表函数
下列 SQL 查询语句调用已被定义的表函数。
SELECT *
<wbr>FROM TABLE (table_ref_cur_week (CURSOR (SELECT *<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>FROM sum_sales_country_mv)));</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
SELECT *
<wbr>FROM TABLE (table_ref_cur_strong (CURSOR (SELECT *<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>FROM sum_sales_country_mv)));</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
SELECT *
<wbr>FROM TABLE (table_ref_cur_row (CURSOR (SELECT *<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>FROM sum_sales_country_mv)));</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
SELECT *
<wbr>FROM TABLE (table_ref_cur_week (CURSOR (SELECT *<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>FROM sum_sales_country_mv<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>WHERE country = 'AU')));</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>