我需要创建一个函数,该函数允许我返回与 SELECT 查询相同的结果,并且包含 pl/sql 代码。
我尝试了一些非常简单的事情:
create or replace FUNCTION test
RETURN SYS_REFCURSOR
IS
l_rc SYS_REFCURSOR;
BEGIN
OPEN l_rc
FOR SELECT *
FROM my_table;
RETURN l_rc;
END;
Run Code Online (Sandbox Code Playgroud)
但是,当我使用 调用函数时,我从单个单元格中SELECT test from dual;获取所有结果,而不是将每列分开。my_table
有办法做我想做的事吗?
理想情况下,我想要一个视图,但似乎无法添加逻辑条件。
该函数必须被流水线化。例如 :
TYPE MyType IS RECORD(ID NUMBER);
TYPE MyTableType IS TABLE OF MyType;
Function MyFunction(Arguments) return MyTableType pipelined is
Cursor Cur is select * from whetever;
R Cur%rowtype;
Begin
Open cur;
loop
fetch Cur into R;
exit when Cur%notfound;
pipe row(R);
End loop;
Close cur;
End MyFunction;
Run Code Online (Sandbox Code Playgroud)
然后你可以通过以下方式调用它:
select * from table(MyFunction(Arguments));
Run Code Online (Sandbox Code Playgroud)