首页 > 数据库 > mysql教程 > 一个 Oracle 存储过程可以调用另一个存储过程吗?

一个 Oracle 存储过程可以调用另一个存储过程吗?

Linda Hamilton
发布: 2024-12-25 04:15:09
原创
957 人浏览过

Can One Oracle Stored Procedure Call Another?

在 Oracle 中调用另一个存储过程

问题:

可以从 Oracle 中的另一个存储过程调用存储过程?如果是这样,如何实现这一点?

示例代码:

SET SERVEROUTPUT ON;

DROP PROCEDURE test_sp_1;
DROP PROCEDURE test_sp;

CREATE PROCEDURE test_sp
AS
BEGIN
    DBMS_OUTPUT.PUT_LINE('Test works');
END;
/

CREATE PROCEDURE test_sp_1
AS
BEGIN
    DBMS_OUTPUT.PUT_LINE('Testing');
    test_sp;
END;
/

CALL test_sp_1;
登录后复制

解决方案:

测试代码前提是已成功创建并初始化存储过程。但是,问题出在最后一行,它尝试调用过程但失败。

在 SQL*Plus 中调用存储过程的方法有以下三种:

  1. CALL: 需要括号,即使对于没有括号的过程也是如此参数。
CALL test_sp_1();
登录后复制
  1. 匿名 PL/SQL 块: 允许内联执行代码。
BEGIN
    test_sp_1;
END;
/
登录后复制
  1. EXEC: 一个 SQL*Plus 命令,是匿名的快捷方式块。
EXEC test_sp_1
登录后复制

示例:

SQL> CALL test_sp_1();
Testing
Test works

Call completed.

SQL> EXEC test_sp_1
Testing
Test works

PL/SQL procedure successfully completed.

SQL> BEGIN
  2      test_sp_1;
  3  END;
  4  /
Testing
Test works

PL/SQL procedure successfully completed.
登录后复制

以上是一个 Oracle 存储过程可以调用另一个存储过程吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板