多值函數或表函數返回的都是由多個值組成的一個集合。可以使用SQL命令的table操作符,可以將該集合直接用作SQL查詢中的關係表。
第一步:創建一個類型,如:
- CREATE TYPE BookType AS OBJECT (
- isbn CHAR(10),
- title VARCHAR2(100)
- )
第二步:創建以BookType爲基本類型的表類型
- CREATE TYPE BookTypes AS TABLE OF BookType;
第三步:創建函數
- CREATE OR REPLACE FUNCTION SomeBooks(p_Category IN books.category%TYPE)
- RETURN BookTypes AS
- v_ResultSet BookTypes := BookTypes();
- CURSOR c_SomeBooks IS
- SELECT isbn, title
- FROM books
- WHERE category = p_Category;
- BEGIN
- FOR v_Rec IN c_SomeBooks LOOP
- v_ResultSet.EXTEND;
- v_ResultSet(v_ResultSet.LAST) := BookType(v_Rec.isbn, v_Rec.title);
- END LOOP;
- RETURN v_ResultSet;
- END SomeBooks;
第四步:調用函數
- SELECT * FROM TABLE (SomeBooks('Oracle Basics'));