我正在尝试在Oracle DB中创建一个新的PL/SQL过程。该过程将由BASH脚本创建。稍后,该过程将从相同的BASH脚本中执行。
有一些方法可以从bash脚本执行存储过程,但没有一种方法解释如何从bash脚本创建存储过程。
backup_procedure_string="CREATE OR REPLACE
PROCEDURE BACKUP_TABLE_PROCEDURE(
.
.
END BACKUP_TABLE_PROCEDURE;"
backup_procedure_execution_string="BACKUP_TABLE_PROCEDURE('${param1}', '${param2}', '${param3}');"
sqlplus -S "${ofca_connect_string}" << EOF >> "${current_directory}/query.log"
WHENEVER SQLERROR EXIT 1
SET SERVEROUTPUT ON
SET TERMOUT OFF
$backup_procedure_string
EXECUTE $backup_procedure_execution_string
SET SERVEROUTPUT OFF
EXIT;
EOF应该在数据库中创建并执行过程"BACKUP_TABLE_PROCEDURE“。但是,没有出现error/oracle错误,但是也没有创建该过程。
发布于 2019-06-14 22:18:49
适用于我,这里有一个完整的代码示例。
请注意,我使用的SQLcl不是SQLPlus,而是相同的概念。
不知道你里面有什么。。代码,所以可能有问题?
Jeffreys-Mini:19.1 thatjeffsmith$ procedure_string="CREATE OR REPLACE PROCEDURE SO_BASH is BEGIN
> null;
> END SO_BASH;
> /
> "
Jeffreys-Mini:19.1 thatjeffsmith$ echo $procedure_string
CREATE OR REPLACE PROCEDURE SO_BASH is BEGIN null; END SO_BASH; /
Jeffreys-Mini:19.1 thatjeffsmith$ sql hr/oracle << EOF >> so.log
> $procedure_string
> EXIT;
> EOF
Jeffreys-Mini:19.1 thatjeffsmith$ more so.log
SQLcl: Release 18.3 Production on Fri Jun 14 10:16:57 2019
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Fri Jun 14 2019 10:16:58 -04:00
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
Procedure SO_BASH compiled
Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
Jeffreys-Mini:19.1 thatjeffsmith$ 浏览我的方案...

https://stackoverflow.com/questions/56599907
复制相似问题