我试图在互联网上找到它,但我可以在任何地方找到。我想让Oracle存储过程像这样:
CREATE OR REPLACE PROCEDURE Read()
IS
BEGIN
SELECT * FROM Books;
END;
/
这将得到结果和数组。所以我想在PHP数组中检索这个oracle存储过程的结果。你能修改一下吗?所以当我在php中获得数组时,我可以很容易地通过数据获取?提前谢谢!
我怀疑您不想返回数组。相反,我怀疑您希望存储过程返回一个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。