小编Ste*_*ein的帖子

为什么我不能在 SQL 语句中调用我的函数?

我创建了一个包,该包在同一页面内的 SELECT 语句中执行我的函数:

CREATE OR REPLACE PACKAGE p
   AUTHID DEFINER
IS
   FUNCTION f
      RETURN NUMBER;
END;
/

CREATE OR REPLACE PACKAGE BODY p
IS
   FUNCTION ff RETURN NUMBER
   IS
   BEGIN
      RETURN 73;
   END;

   FUNCTION f RETURN NUMBER
   IS
      l_number   NUMBER;
   BEGIN
      SELECT 42 INTO l_number
        FROM DUAL
       WHERE ff () = 73;

      RETURN l_number;
   END;
END;
/

BEGIN
   DBMS_OUTPUT.put_line (p.f);
END;
/
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行该函数时,出现 PLS-00231 编译错误:

BEGIN
   dbms_output.put_line (P.F);
END;
/

PLS-00231: function 'FF' may not be used in SQL
Run Code Online (Sandbox Code Playgroud)

该函数就在那里声明。它不执行任何非查询 …

sql oracle plsql function

4
推荐指数
1
解决办法
5308
查看次数

Oracle PL/SQL优化器是优化匿名块还是仅存储程序单元?

我在匿名块中有很多代码,我担心PL/SQL优化器不会优化该代码.我应该将我的代码从匿名块移动到包中以确保优化器为我完成所有繁重的工作吗?

oracle plsql

2
推荐指数
1
解决办法
185
查看次数

标签 统计

oracle ×2

plsql ×2

function ×1

sql ×1