我试图在互联网上找到这个,但我可以在任何地方找到它。 我希望Oracle存储过程类似于:
CREATE OR REPLACE PROCEDURE Read()
IS
BEGIN
SELECT * FROM Books;
END;
/
这将得到我作为结果和数组。所以我想在PHP数组中检索这个oracle存储过程的结果。你可以修改一下吗? 所以当我在php中获取数组时,我可以轻松获取数据? 提前谢谢!
答案 0 :(得分:2)
我怀疑你不想返回数组。相反,我怀疑您希望存储过程返回REF CURSOR
。
CREATE OR REPLACE PROCEDURE Read( p_rc OUT SYS_REFCURSOR )
AS
BEGIN
OPEN p_rc
FOR SELECT *
FROM books;
END;
如果你真的想从PL / SQL返回一个数组(在服务器上将使用更多的PGA空间和其他资源),你可以做到
CREATE TYPE book_typ
AS OBJECT (
<<list of columns in BOOKS>>
);
CREATE TYPE book_tbl
AS TABLE OF book_typ;
CREATE OR REPLACE PROCEDURE Read( p_arr OUT book_tbl )
AS
BEGIN
SELECT <<list of columns>>
BULK COLLECT INTO p_arr
FROM books;
END;
以这种方式构造代码而不是返回REF CURSOR
几乎没有意义。它的效率会低得多,使用的服务器资源会大大减少,因此可扩展性也会降低。此外,还有多种方法可以直接在PL / SQL中生成XML。