我正在尝试根据我给出的数字创建一个返回行的函数。我已经创建了这个功能,但似乎无法使其正常工作。
这是我的功能:
create or replace function vitest(t_na test.na%type)
return sys_refcursor is t_test sys_refcursor;
begin
open t_test for
select * from test where na = t_na;
return t_test;
end;
我尝试过使用:
select vitest(1) from dual;
但它给了我错误:ORA-00932。 我也尝试过使用:
begin
vitest(1);
end;
但它说vitest不是一个程序......
我怎样才能让它发挥作用?
答案 0 :(得分:0)
假设您的test
表格包含col1
,col2
,col3
列,您可以按以下方式调用您的函数:
DECLARE
l_cursor SYS_REFCURSOR;
l_col1 test.col1%TYPE;
l_col2 test.col2%TYPE;
l_col3 test.col3%TYPE;
BEGIN
l_cursor := vitest(1);
LOOP
FETCH l_cursor
INTO l_col1, l_col2, l_col3;
EXIT WHEN l_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(l_col1 || ' | ' || l_col2 || ' | ' || l_col3);
END LOOP;
CLOSE l_cursor;
END;
*此外,您现在的选择会更改
<强>从强>
select * from test where na = t_na;
以强>
select col1,col2,col3 from test where na = t_na;