微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Shell脚本执行oracle存储过程

如何解决如何从Shell脚本执行oracle存储过程

我是oracle存储过程的新手,正在尝试在shell脚本中执行oracle存储过程。存储过程将输出消耗的数据库模式内存,并将存储过程的输出与我计划的阈值(例如70%)进行比较,然后通过电子邮件发送给邮件发件人。但是我被困在存储过程的输出无法打印的地方

我尝试使用Set serveroutput on来将输出输出到终端或捕获到变量中,但没有成功。不知道我在想什么。下面是test.sh

#!/bin/bash

l_user='CCS_EB_U'
l_psw='password'
l_conn_string='CSFPRD'
sql_error=`sqlplus -silent $l_user/$l_psw@$l_conn_string <<END
WHENEVER sqlERROR EXIT 1
Set timing on
Set serveroutput on

declare
--Set server_on;
p_table_space_name_o varchar (100);
p_tot_table_space_size_gb_o varchar2(200);
p_free_space_gb_o varchar2(100);
begin
dbms_output.put_line('Start');
apps.XXCSS_MCE_AM_AUDIT_PKG.get_csf_table_space (p_table_space_name_o,p_tot_table_space_size_gb_o,p_free_space_gb_o);
dbms_output.put_line(p_table_space_name_o);
dbms_output.put_line(p_tot_table_space_size_gb_o);
dbms_output.put_line(p_free_space_gb_o);
end ;

/
EXIT;
END`

Result=$?

echo $Result
if [[ $Result -ne 0 ]]
then
  echo "${sql_error}"
  echo "Error calling the PL/sql procedure."
  exit $Result
else
  echo "PL/sql Procedure executed successfully."
  exit 0
fi

我只是输出

0

PL/sql Procedure executed successfully.

但是所需的输出(当我单独执行存储过程时)是

Start
CSSD1
13844.875
3250.510498046875

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。