多值函数或表函数返回的都是由多个值组成的一个集合。可以使用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'));
转载于:https://blog.51cto.com/xin891120/1108039