Oracle PL/SQL SELECT INTO 子句认为它需要另一个 INTO

Posted

技术标签:

【中文标题】Oracle PL/SQL SELECT INTO 子句认为它需要另一个 INTO【英文标题】:Oracle PL/SQL SELECT INTO clause thinks it needs another INTO 【发布时间】:2019-10-15 01:23:47 【问题描述】:

我有一个简单的测试函数,我在其中传递一个特定的 ID(我从中选择的表的主键),并在其上计算一个简单的函数和参数。

骨架代码及测试:

create or replace function test(id varchar2, area float) return float is
    theRow forest%ROWTYPE;
begin
    select * into theRow from forest where Forest_No = id;
    return area / theRow.Area;
end;

begin
    select test('1', 16000) from dual;
end;

输出:

[2019-10-14 21:19:10] [65000][6550] ORA-06550: line 2, column 5:
[2019-10-14 21:19:10] PLS-00428: an INTO clause is expected in this SELECT statement

据我所知,文档和示例使用相同的顺序和语法,我不知道该怎么做。我曾尝试像在 Postgresql 中那样将 into 子句移到末尾,但这没有用。

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

问题在于调用语句。

每当select 语句在plsql 块中使用时,它必须有into 子句来为变量分配返回值。

您应该从调用代码中删除 beginend

--begin -- remove this
    select test('1', 16000) from dual;
--end; -- remove this

或者如果你想在 plsql 块中使用它然后添加到子句中:

Declare
Area_ float(precision);
begin
    select test('1', 16000) into area_ from dual;
    -- use area_ in your code wherever required
    dbms_output.put_line('area: ' || area_);
end;

干杯!!

【讨论】:

以上是关于Oracle PL/SQL SELECT INTO 子句认为它需要另一个 INTO的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle PL SQL 中将 INTO 与 SELECT AS 一起使用?

Oracle PL/SQL - ORA-01403 使用“SELECT INTO”时“未找到数据”

PL/SQL SELECT INTO 错误 (ORA-00905)

oracle中select缺少into?

Oracle 未找到多个 Select Into 语句的数据

PL/SQL:SELECT INTO 引发 ORA-00947