函数Oracle PL SQL大容量收集错误PLS-00382:表达式的类型错误



我有这个函数:

CREATE OR REPLACE TYPE products_type AS OBJECT
(
products VARCHAR2 (50),
price VARCHAR2 (50)
);
CREATE OR REPLACE TYPE results_type AS TABLE OF products_type;

create or replace get_sum ( l_products in varchar2(50)
RETURN results_type
IS
l_result   results_type;
begin
SELECT distinct products, count(price)
BULK COLLECT INTO l_result
FROM products;
RETURN l_result;
END;
/
DECLARE
l_result varchar2(50) := '0';
BEGIN
l_result := get_sum ('apple')
DBMS_OUTPUT.PUT_LINE('Price total ' || l_result);
END;

我有这张表,我想知道乘积的和是多少。当我想要显示多个列时,我会尝试学习函数是如何工作的。我在互联网上发现了与批量收集相关的信息,我试图这样做,但我遇到了这个错误:

PLS-00382:表达式类型错误我做错了什么?

问题是在函数GET_SUM中,返回类型为results_type的l_result。在您的匿名块中,您正在调用GET_SUM并试图将其分配给VARCHAR2(50)变量。试图将值赋给的变量需要与函数的返回类型相匹配。

最新更新