用plsql查询的内容,转换为shell的变量,供外部脚本调用 的方法
最近学习了别人的代码,是shell脚本调用oracle的plsql,plsql查询的内容按照格式输出(dbms_output.put_line)到一个文件中,这个文件中都是变量,再被别的脚本调用(source)。
请看下面的代码:
set serveroutput on;
declare
backup_name varchar2(20);
device_type varchar2(8);
start_time varchar2(19);
end_time varchar2(19);
autobackup varchar2(3);
status varchar2(50);
backup_type varchar2(10);
input_data varchar2(10);
output_data varchar2(10);
time_taken varchar2(8);
begin
select command_id,
output_device_type,
to_char(start_time,'YYYY-MM-DD HH24:MI:SS'),
to_char(end_time,'YYYY-MM-DD HH24:MI:SS'),
autobackup_done,
status,
input_type,
input_bytes_display,
output_bytes_display,
time_taken_display
into backup_name,device_type,start_time,end_time,autobackup,status,backup_type,input_data,output_data,time_taken
from v$rman_backup_job_details where command_id =to_char(sysdate,'YYYY-MM-DD')||'T01:30:01';
dbms_output.put_line('#!/bin/sh');
dbms_output.put_line('name='||''''||backup_name||'''');
dbms_output.put_line('type='||''''||device_type||'''');
dbms_output.put_line('start_time='||''''||start_time||'''');
dbms_output.put_line('end_time='||''''||end_time||'''');
dbms_output.put_line('autobackup='||''''||autobackup||'''');
dbms_output.put_line('status='||''''||status||'''');
dbms_output.put_line('backup_type='||''''||backup_type||'''');
dbms_output.put_line('input_data='||''''||input_data||'''');
dbms_output.put_line('output_data='||''''||output_data||'''');
dbms_output.put_line('time_taken='||''''||time_taken||'''');
end;
/
- set serveroutput on; 设置打开某种状态,为了plsql程序在执行时输出结果,也就是能使用dbms_output.put_line
- selelct ... into ...from v$rman_backup_job_details where ...将查询的数据放在变量中
- 调用过程:S3_backup.sh
sqlplus / as sysdba<<EOF>/dev/null 2>&1
set feedback off;
spool /oracle/PROD/AdminTool/Rman/information.log;
@/oracle/PROD/AdminTool/Rman/result_var.sql;
spool off;
exit;
EOF
sed -i -e '1d' -e'$d' /oracle/PROD/AdminTool/Rman/information.log
source /oracle/PROD/AdminTool/Rman/information.log
result_var.sql就是上面脚本
4. source调用参数,也就是变量。
总结:
这是我没有尝试过的,将很多的变量输出出来给另一个脚本调用,是从数据库plsql中到shell脚本中用。本次是完善报表的显示内容。

浙公网安备 33010602011771号