如果要从存储过程中返回一个类似列表的数据结构,你可以创建一个表类型,然后使用一个表变量(table variable)来存储结果。这里是一个示例,展示如何创建一个存储过程,该过程查询数据库并返回结果集,这可以被视为一个列表。
创建一个表类型:用于定义返回数据的结构。
CREATE TYPE t_list AS TABLE OF varchar2(20);
创建存储过程:使用上述表类型,并返回查询结果。
CREATE OR REPLACE PROCEDURE get_list(p_list OUT t_list) AS
TYPE cur_list IS REF CURSOR;
l_cur cur_list;
BEGIN
OPEN l_cur FOR SELECT name FROM your_table;
FETCH l_cur BULK COLLECT INTO p_list;
END get_list;
/
调用存储过程:在调用存储过程时,传递一个表类型的变量,存储过程会将结果集填充到该变量中。
DECLARE
l_list t_list := t_list();
BEGIN
get_list(l_list);
-- 处理 l_list
FOR i IN 1..l_list.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(l_list(i));
END LOOP;
END;
/