oracle 函数 等同于 sql server 表值函数

多值函数或表函数返回的都是由多个值组成的一个集合。可以使用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'));

猜你喜欢

转载自shutaodream.iteye.com/blog/2069632