oracle - 从主 oracle 存储过程调用 Oracle 存储过程(语法错误)
问题描述
我正在尝试创建一个主 Oracle 存储过程,调用其他 Oracle 存储过程。我在 Toad 中遇到语法错误。
环境为Windows Server 2012R2,Oracle版本为12.1.0。
主要的存储过程很简单:
CREATE OR REPLACE PROCEDURE TESTDB.MAIN
(
ID IN NUMBER
)
IS
BEGIN
CALL PROCEDURE1(ID);
CALL PROCEDURE2(ID);
CALL PROCEDURE3(ID);
CALL PROCEDURE4(ID);
END;
在为每个过程编译时出现语法错误:
PLS-00103:在预期以下情况之一时遇到符号“PROCEDURE1”:
:= 。( @ % ; 符号 ":=" 被替换为 "PROCEDURE1" 以继续。
从一个中心过程调用过程的正确语法是什么?
解决方案
你必须删除CALL
,只能使用
从 SQL 中执行例程 […]
BEGIN
PROCEDURE1(ID);
PROCEDURE2(ID);
PROCEDURE3(ID);
PROCEDURE4(ID);
END;
例如:
SQL> create or replace procedure proc(n IN OUT number) is begin n := 10; end;
2 /
Procedure created.
SQL> var x number
SQL> call proc(:x);
Call completed.
SQL> print :x
X
----------
10
SQL> declare
2 y number;
3 begin
4 call proc(y);
5 end;
6 /
call proc(y);
*
ERROR at line 4:
ORA-06550: line 4, column 8:
PLS-00103: Encountered the symbol "PROC" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "PROC" to continue.
SQL>
推荐阅读
- android - 错误:“注释”属性指令被忽略
- linux - 记录更新同一行的控制台输出
- python - 计算 softmax 函数的成本(损失)时数组的索引过多
- html - Angular 6(拖动)事件绑定不起作用
- html - 使用 VBA 从网站提取数据,但出现运行时错误 '91'
- amazon-web-services - 为服务提供看门狗功能的 AWS 服务
- html - Google docs iframe 无法在移动设备上运行
- javascript - 如何仅在特定网址中添加 javascript 代码?
- java - RxJava 从 Openweathermap 获取多个城市天气
- node.js - 如何在 Jenkins 上更改节点版本?