【发布时间】:2019-12-13 21:28:37
【问题描述】:
情况:我正在尝试从 Linux shell 脚本运行 Oracle 存储过程。我创建了一个名为 my_procedure.sql 的 .sql 文件,如下所示:
set serveroutput on
set serveroutput off
DECLARE
my_variable NUMBER(10);
BEGIN
exec schema.my_procedure();
END;
/
EXIT
上面的 .sql 文件又从一个名为 myscript.sh 的简单 shell 脚本调用,如下所示:
sqlplus -s /@connection_sid @my_procedure
问题:当我执行sh myscript.sh时,它会在my_procedure.sql文件中抛出如下错误:
Encountered the symbol 'schema' when expecting one of the following
:= . ( @ % ;
到目前为止我所做的尝试:我猜想是通过删除 exec 关键字来实现的。然后我尝试使用 username.schema.myprocedure,但没有任何效果。
这个过程在命令行中运行良好,因此:
sqlplus -s username/password <<END
exec myprocedure();
END;
对此的任何建议都会非常有帮助。
【问题讨论】:
-
删除
exec后,“但没有任何效果”是什么意思?exec用于 SQLPlus,不能在 PlSQL 块中使用。 -
删除 exec 会出现错误:“必须声明标识符 'schema.my_procedure'”。应该在哪里声明?我刚刚保存并在架构中运行它。
-
Kaushik,在我的 .sql 文件中,“exec”和删除 exec 都不起作用。只有错误消息不同。使用“exec”,错误消息是“遇到符号模式...”,没有它,错误消息是,“Identifier schema.my_procedure”必须声明。
标签: bash oracle shell sh sqlplus