繁体   English   中英

Function Oracle PL SQL 批量收集错误 PLS-00382:表达式类型错误

[英]Function Oracle PL SQL bulk collect error PLS-00382: expression is of wrong type

我有这个 function:

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;

我有这张表,我想知道乘积的总和是多少。 当我想显示多列时,我尝试了解 function 是如何工作的。 我在 inte.net 上找到了与 bulk collect 相关的内容,我尝试这样做,但是我遇到了这个错误:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM