问题描述
我是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 (将#修改为@)