【发布时间】:2012-04-02 04:26:04
【问题描述】:
你能帮帮我吗? 如何使用 sqlplus 从 shell 脚本连接到数据库 Oracle? 你能做一个调用存储过程的shell脚本的例子吗??
谢谢。
【问题讨论】:
标签: oracle stored-procedures sqlplus
你能帮帮我吗? 如何使用 sqlplus 从 shell 脚本连接到数据库 Oracle? 你能做一个调用存储过程的shell脚本的例子吗??
谢谢。
【问题讨论】:
标签: oracle stored-procedures sqlplus
创建一个 xxxx.sql 文件并像这样执行它:
set serveroutput on;
execute STORED_PROCEDURE;
set serveroutput off;
exit
您需要一种方法来执行您的脚本,我在基于 *nix 的系统上使用 CRON。我的脚本看起来像这样
#!/bin/sh
# This short shell script calls the XXXX Stored Procedure
# drive.
PATH=$PATH:/opt/oracle/local/bin:/usr/local/bin
export ORACLE_SID=XXXX;
export ORAENV_ASK=NO;
export TWO_TASK=XXXXXXXXX;
. /usr/local/bin/oraenv
sqlplus USERID/PASSWPRD @SQL_Script_to_call_stored_Proceudre.sql
exit
【讨论】:
@。 Persaonlly 我也总是使用-s 标志来减少噪音;特别是如果从cron 运行(尽管这似乎不是这里的要求)显式设置环境:ORACLE_HOME、ORACLE_SID 等。
这是一个例子:
创建一个 sh 文件“callProcedureFromBash.sh”
#!/bin/bash this is a comment
#if you can access sqlplus already, you don't need following 2 lines
export ORACLE_HOME = /efs/dist/oracledb/client/10G/exec
export PATH=$PATH:$ORACLE_HOME/bin
sqlplus "userid/password@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = WWW.YOURHOST.COM) (PORT = 12345) (CONNECT_DATA = (SID = HXZ524))))" <<END
DECLARE
a int;
BEGIN
packagename.Procedurename(a);
END;
/
commit;
【讨论】: