繁体   English   中英

我们可以从 oracle 中的匿名块调用过程或 function 吗?

[英]Can we call procedure or function from anonymous block in oracle?

我可以在匿名块中通过过程或 function 调用 pl/sql object 吗?

这是一个非常常见的面试问题。

谢谢

是的:

SQL> set serveroutput on
SQL> --
SQL> select banner from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

SQL> show user;
USER is "C##TEST"
SQL> --
SQL> CREATE OR REPLACE PROCEDURE myproc
  2  IS
  3  BEGIN
  4   dbms_output.put_line('myproc: OK');
  5  END;
  6  /

Procedure created.

SQL> --
SQL> show errors
No errors.
SQL> --
SQL> CREATE OR REPLACE FUNCTION myfunc RETURN VARCHAR2
  2  IS
  3  BEGIN
  4   return 'myfunc: OK';
  5  END;
  6  /

Function created.

SQL> --
SQL> show errors
No errors.
SQL> --
SQL> begin
  2   myproc;
  3  end;
  4  /
myproc: OK

PL/SQL procedure successfully completed.

SQL> --
SQL> declare
  2   myvar VARCHAR2(50);
  3  begin
  4   select myfunc into myvar from dual;
  5   dbms_output.put_line(myvar);
  6  end;
  7  /
myfunc: OK

PL/SQL procedure successfully completed.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM