Sql 使用函数查找最大DEPTNO
使用PLSQL,我必须使用函数从DEPT表中查找max DEPTNO,调用该函数时,该函数将从DEPT表返回max DEPTNO。 我的问题是,如何在不让参数为空的情况下执行此操作 我的任务是:创建一个PL/SQL函数,该函数在调用时将从Sql 使用函数查找最大DEPTNO,sql,oracle,plsql,Sql,Oracle,Plsql,使用PLSQL,我必须使用函数从DEPT表中查找max DEPTNO,调用该函数时,该函数将从DEPT表返回max DEPTNO。 我的问题是,如何在不让参数为空的情况下执行此操作 我的任务是:创建一个PL/SQL函数,该函数在调用时将从dept表返回最大(最大)的deptno。将此函数命名为f\u find\u maxdept。编写匿名块以测试此函数 我的代码: CREATE OR REPLACE FUNCTION f_find_maxdept()return number is max_d
dept
表返回最大(最大)的deptno
。将此函数命名为f\u find\u 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;
如果函数不需要参数,则应省略括号
CREATE OR REPLACE FUNCTION f_find_maxdept return number ...
您正在创建的函数和在该函数中查询的数据库表都需要位于同一架构中 从Oracle文档中的CREATE FUNCTION语句: 要在自己的模式中创建或替换函数,必须具有CREATEPROCEDURE系统权限。若要在其他用户的架构中创建或替换函数,必须具有“创建任何过程”系统权限 我猜表DEPT在SCOTT模式中,您正试图在模式中创建一个函数 假设您具有CREATE ANY PROCEDURE系统权限,则可以编写以下SQL来创建函数:
创建或替换函数SCOTT.F\u FIND\u MAXDEPT
返回号码
是
最大DEPTNO SCOTT.DEPTS.DEPTNO%类型;
开始
选择最大值(DEPTNO)
进入马克斯·德普诺
来自SCOTT.DEPTS;
返回最大DEPTNO;
终止
或者,您可以在模式中创建DEPTS表的副本
根据SCOTT.DEPTS中的select*创建表DEPTS;
然后创建如下函数:
创建或替换函数F\u FIND\u MAXDEPT
返回号码
是
最大DEPTNO DEPTS.DEPTNO%类型;
开始
选择最大值(DEPTNO)
进入马克斯·德普诺
来自部门;
返回最大DEPTNO;
终止
测试函数的匿名PL/SQL块是(假设您在模式中创建了DEPTS表):
声明
最大部门部门部门无%类型;
开始
MAX\u DEPT:=F\u FIND\u MAXDEPT;
DBMS_输出。输出线(最大部门);
终止
这取决于您需要什么参数。欢迎使用堆栈溢出!请拿着(你得到了一个徽章!),四处看看,仔细阅读,特别是我还推荐乔恩·斯基特的。请编辑您的文章,使用适当的大小写。所有的大写字母都会给人以叫喊的感觉。您始终可以添加一个伪参数……正如您在问题中所写的那样,该任务并不表示函数需要参数。你认为为什么会这样?这正是我想要找到的。