你的存储过程的工作作为编码。问题在于最后一行,它无法调用任何一个存储过程。

SQL * Plus中的三种选择是:call,exec和一个有害的PL/SQL块。

CALL test_sp_1();

一位不愿具名的PL/SQL块是PL/SQL不是一个命名过程,函数,触发器中,等它可以用来打电话给你的程序。

BEGIN

test_sp_1;

END;

/

Exec是一个SQL * Plus命令,它是上述匿名块的快捷方式。EXEC 将被传递到数据库服务器作为BEGIN ; END;

完整的示例:

SQL> SET SERVEROUTPUT ON

SQL> CREATE OR REPLACE PROCEDURE test_sp

2 AS

3 BEGIN

4 DBMS_OUTPUT.PUT_LINE('Test works');

5 END;

6/

Procedure created.

SQL> CREATE OR REPLACE PROCEDURE test_sp_1

2 AS

3 BEGIN

4 DBMS_OUTPUT.PUT_LINE('Testing');

5 test_sp;

6 END;

7/

Procedure created.

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.

SQL>

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐