开源中文网

您的位置: 首页 > 数据库应用 > Oracle > 正文

shell脚本执行Oracle SQL脚本实例

来源:  作者:

同事写的一个调查EBS信息的脚本。

#标准输出设置,使用DBMS_OUTPUT.put_line()输出到屏幕。
#size 设置缓冲区大小。

set SERVEROUTPUT ON size 100000;
#查询结果行数设置
set FEEDBACK OFF;
#是否显示结果头信息
set HEADING OFF;
#是否显示命令
set ECHO OFF;
#如果设为0,则所有的输出内容为一页并且不显示列标题
set PAGES 0
#设置行长度
set LINESIZE 255
#输出格式
COL  TABLE_NAME  FORMAT a30;

#查询结果定向到参数1指定的文件中
spool &1

declare
      NUM_COUNT NUMBER;
BEGIN
    FOR CUR IN (SELECT * FROM USER_TABLES ) LOOP
        EXECUTE IMMEDIATE 'SELECT COUNT(*) INTO :NUM_COUNT FROM ' || 
        CUR.TABLE_NAME INTO NUM_COUNT;
        DBMS_OUTPUT.PUT_LINE(CUR.TABLE_NAME || ',' || NUM_COUNT );
    END LOOP;
END;
/
      
spool off
quit
 

我写的一个shell脚本。
#/bin/sh
#input
#       scrptnm: SQL script name
#       outflnm: Output file name
#function
#       SQL running result

runSQLS()
{
    #input parameter
    if [ "$#" -lt 3 ]; then
        echo "use: ./0030.sh scrptnm outflnm"
        return
    fi
    
    #run SQL script
    ERRORBUF=`sqlplus apps/apps @$1 $2`

    echo "ERRORBUF: $ERRORBUF"
}

#shell main program
#1, configure environment
export ORACLE_SID=eoss
export ORACLE_HOME=/app/eoss/eossdb/9.2.0
PATH=$PATH:$ORACLE_HOME/bin
#call function
runSQLS "$1" "$2"
echo "run 0030.sh over..."
运行结果:

Tags:shell 脚本 执行
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明