使用plsql,我必须使用函数从dept表中找到max deptno,这个函数在调用时将返回dept表中的max deptno。我的问题是,我如何才能做到这一点,而不留下空白的论点。
我的任务是:创建一个pl/sql函数,它将返回最大值(maximum) deptno
从 dept
调用时的表。将此函数命名为 f_find_maxdept
. 写一个匿名块来测试这个函数。
我的代码:
CREATE OR REPLACE FUNCTION f_find_maxdept()return number is
max_deptno dept.deptno%TYPE;
begin
select max(deptno) into max_dept from dept;
return max_dept;
end f_find_maxdept;
2条答案
按热度按时间yrdbyhpb1#
如果函数不需要参数,那么应该省略括号
gopyfrb32#
您正在创建的函数和在该函数中查询的数据库表都需要位于同一架构中。
从create function语句的oracle文档中:
若要在自己的架构中创建或替换函数,必须具有“创建过程”系统权限。若要在其他用户的架构中创建或替换函数,必须具有“创建任何过程”系统权限。
我猜表dept在scott模式中,您正试图在模式中创建一个函数。
假设您具有create any procedure系统权限,则可以编写以下sql来创建函数:
或者,可以在模式中复制depts表。
然后创建如下函数:
测试函数的匿名pl/sql块是(假设您在模式中创建了depts表):