Abs*_*ern 2 oracle plsql function pipelined-function
我正在尝试创建一个函数来从数据库中获取值列表。经过一些研究,我发现我需要使用PIPELINE函数,并找到了一些示例。我完成了我的功能,但不知何故出现了2个我不理解的错误。
这是我的代码:
CREATE OR REPLACE TYPE LISTE_VALUES AS TABLE OF VARCHAR2(2000);
/
CREATE OR REPLACE FUNCTION F_GET_VAL(
PI_1 IN VARCHAR2,
PI_2 IN NUMBER,
PI_3 IN VARCHAR2)
RETURN LISTE_VALUES PIPELINED
IS
W_ROW_COUNT NUMBER := 0;
BEGIN
FOR CUR IN (SELECT VALUE FROM TABLE
WHERE ...
...
)
LOOP
PIPE ROW (CUR);
W_ROUNT_COUNT := W_ROW_COUNT + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('There were '
|| W_ROW_COUNT
|| ' rows selected' );
END F_GET_VAL;
/
Run Code Online (Sandbox Code Playgroud)
这些是我得到的错误:
[错误] PLS-00382:PLS-00382:表达式类型错误(在行:PIPE ROW(CUR);)
[错误] PLS-00201:PLS-00201:必须声明标识符“ W_ROUNT_COUNT”
(在一行:W_ROUNT_COUNT:= W_ROW_COUNT +1;)
对于第一个错误,我进行了三次检查,并且VALUE
表中的类型为VARCHAR2(2000)
,就像我在开头声明的类型(的表VARCHAR2(2000)
)一样。
第二,我不明白,因为我W_ROW_COUNT
在IS语句中声明了变量。
如果有人可以帮助我,那就太好了!谢谢