多值函数或表函数返回的都是由多个值组成的一个集合。可以使用SQL命令的table操作符,可以将该集合直接用作SQL查询中的关系表。

第一步:创建一个类型,如:

  1. CREATE TYPE BookType AS OBJECT ( 
  2.   isbn  CHAR(10), 
  3.   title VARCHAR2(100) 

第二步:创建以BookType为基本类型的表类型

 

  1. CREATE TYPE BookTypes AS TABLE OF BookType; 

第三步:创建函数

  1. CREATE OR REPLACE FUNCTION SomeBooks(p_Category IN books.category%TYPE) 
  2.   RETURN BookTypes AS 
  3.  
  4.   v_ResultSet BookTypes :BookTypes(); 
  5.    
  6.   CURSOR c_SomeBooks IS 
  7.     SELECT isbn, title 
  8.       FROM books 
  9.       WHERE category = p_Category
  10.  
  11. BEGIN 
  12.   FOR v_Rec IN c_SomeBooks LOOP 
  13.      
  14.     v_ResultSet.EXTEND; 
  15.     v_ResultSet(v_ResultSet.LAST) :BookType(v_Rec.isbn, v_Rec.title); 
  16.   END LOOP; 
  17.    
  18.   RETURN v_ResultSet; 
  19. END SomeBooks; 

第四步:调用函数

  1. SELECT * FROM TABLE (SomeBooks('Oracle Basics'));