如何从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 (将#修改为@)