sql - 函数 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
中,您返回的是 l_result 类型results_type
。在您的匿名块中,您正在调用GET_SUM
并尝试将其分配给VARCHAR2(50)
变量。您尝试分配值的变量需要与函数的返回类型相匹配。
推荐阅读
- javascript - 键入'字符串 | undefined' 不可分配给类型 'string'
- javascript - Angular removing elements from a list shared with a service
- shopify - Shopify / Liquid - 仅使用液体而不是 Javascript 查找完整 URL
- python-3.x - 为 QStackedWidget 实现 PyQt5“对接/取消对接”机制:不可预测的访问冲突
- r - 如何以不同的起始值可视化 R 中的数据?(即标准化,使每个数据从零开始)
- r - 如何在R中将字符时间格式从“mm:ss”扩展为“hh:mm:ss”
- html - 尝试在绝对定位元素下方的元素上使用悬停
- machine-learning - 决策树中的目标平均值是使用均值还是中值计算的?
- ios - 你如何在swiftUI中禁用navigationBaritems
- python - 使用 tkinter 按钮从 MySQL 获取数据被重复