sql - 从 Oracle PL/SQL 中的函数返回记录时出错
问题描述
DECLARE
TYPE type_supplier IS
RECORD(supp_phone supplier.supplier_phone%TYPE,
supp_status supplier.supplier_status%TYPE);
FUNCTION fn_supplier(supp_name supplier.supplier_name%TYPE)
RETURN type_supplier
IS supp type_supplier;
BEGIN
select supplier_phone, supplier_status
into supp.supp_phone, supp.supp_status
from supplier
where supplier_name = supp_name;
RETURN supp;
END;
问题是:创建一个函数,返回输入的供应商名称的电话号码和状态。供应商表有供应商 ID、供应商名称、供应商地址、供应商电子邮件、供应商电话、供应商状态。我在上面的代码中遇到错误:
Error report -
ORA-06550: line 16, column 4:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
begin function pragma procedure
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
我不知道从 PL/SQL 函数返回多个值。我为此使用记录类型,但收到错误。
我愿意接受任何解决方案、更改或替代方法..
解决方案
您的声明TYPE
不正确。
您可以使用该OBJECT
类型并按如下方式使用它:
create TYPE type_supplier IS
OBJECT(supp_phone supplier.supplier_phone%TYPE,
supp_status supplier.supplier_status%TYPE);
/
FUNCTION fn_supplier(supp_name supplier.supplier_name%TYPE)
RETURN type_supplier
IS supp type_supplier;
BEGIN
select supplier_phone, supplier_status
into supp.supp_phone, supp.supp_status
from supplier
where supplier_name = supp_name;
RETURN supp;
END;
/
推荐阅读
- google-apps-script - 如何在不使用 openById 或 openByUrl 的情况下打开多个电子表格
- eclipse-rcp - 启动基于 Eclipse 功能的项目
- php - 在 WordPress 中使用 AJAX 和 jQuery
- python - 在 Python 中的 csv 文件中使用 for 循环
- amazon-ec2 - 删除 /usr/bin/sudo
- c# - TPL DataFlow 仅在处理完所有数据后才传播完成
- java - 如何使用java将一个列表减少到另一个列表
- sql - 给定*多个分区*,用日历表填充所有日期空白的更好方法是什么?
- python - python:打印从另一个文件收到的参数的变量名
- c++11 - 表达式后本征对象值意外变化