function - 将查询的答案保存在变量 PL/SQL 中
问题描述
我想将查询的答案保存到一个变量中,然后我会检查各个值。
FUNCTION F_capa(
v_carId car.carid%Type,
v_snumber box.snumber%Type)
RETURN Boolean
IS
type t_box is Table OF box%rowtype;
v_possibleBox t_box := t_box();
BEGIN
SELECT b.carid, COUNT(p.trayID) AS amaunt,b.capacity ,b.date
INTO v_possibleBox
FROM Box b
left JOIN place p on b.carID = p.carID
WHERE b.snumber = v_snumber
GROUP BY b.carID, b.date, b.capacity ;
-- LOOP IF( v_carId = v_possibleBox(i).carID) Something like that
End;
但我总是得到这个错误。
ORA-00947: not enough values
我对 PLSQL 比较陌生,真的很怀疑这个网站,所以我会很感激任何帮助。
解决方案
ORA-00947 告诉您查询返回的值与 v_possibleBox 记录不匹配。明显的问题是您创建的 amaunt 列。t_box 类型与您的表具有相同的结构(实际上您并不需要它,它只是 box%rowtype 的别名),并且该表不会有列 amaunt。
在这种情况下,使用 Cursor for 循环可能会做得更好,它具有以下结构:
FOR record IN (select_statement)
LOOP
process_record_statements;
END LOOP;
记录成为类型与您的选择语句返回的列匹配的记录,因此在循环内部record.amaunt 将起作用。您不必调用记录记录顺便说一句,for myName IN (select statement)
这很好。
如果要使用原始构造,则需要定义t_box
它以使其具有与 SQL 返回的相同的列和类型。
推荐阅读
- python - 如何在 python 中使用 selenium 单击 html '按钮类'
- java - 如何使用 apache POI 或 PDFBox 将 Excel 转换为 PDF
- css - CSS位置静态力选择自动完成的下拉菜单在执行选择后不关闭
- c - 如何在用户定义的函数中使用格式化字符串?
- reactjs - 我的反应 SPA 导航当前呈现页面大约一秒钟,然后返回到我的主页
- angular - 如何为材料数据表过滤器应用突出显示
- javascript - 无法从列表框中获取所有值
- python - scipy.optimize.minimize 在应用于带有或不带有多处理的熊猫数据帧时在某些行上执行多次
- javascript - 将输入传递给 ajax 返回空数据
- amazon-dynamodb - DynamoDB - 简单解释