oracle - 我们可以从 oracle 中的匿名块调用过程或函数吗?
问题描述
我可以通过匿名块中的过程或函数调用 pl/sql 对象吗?
这是一个非常常见的面试问题。
谢谢
解决方案
是的:
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.
推荐阅读
- java - 尝试使用 Dbeaver DB 连接到 Sybase 时显示“未找到合适的驱动程序”错误
- apache-spark - 带引号的字符串读取的火花数据
- javascript - 反应试图以错误的路径访问文件
- r - 为什么 R 粘贴的小数比四舍五入的多,但只是有时?
- java - 将资源服务器添加到现有的 JSF/Spring 安全应用程序
- java - 我正在尝试安装 Apache Gobblin。如何使用 Gradle 安装它?
- caching - 关于直写的优点
- sql - 是否可以将元组数组中的值添加到表中的单独列
- key - 使用 jq 下降 JSON 文档路径并更新字段名称
- sparql - 为整个 SPARQL 查询创建唯一 ID