首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Windows 批次檔執行 Oracle SQL 腳本與預存程序完整教學

     編輯:Oracle 資料庫基礎

場景一:批次檔呼叫獨立 SQL 檔案

1. 準備 SQL 腳本 (log.sql)

CREATE TABLE log (
  PROBLEMID      VARCHAR2(40),
  PROBLEMNAME    VARCHAR2(260),
  PROBLEMLEVEL   VARCHAR2(40),
  PROBLEMORDER   VARCHAR2(260),
  PARENTID       VARCHAR2(40),
  ROOTTYPEDESC   VARCHAR2(260),
  IFLEAF         VARCHAR2(40),
  MEMO           VARCHAR2(1000),
  IFVALID        VARCHAR2(40),
  ROOTTYPE       VARCHAR2(20)
);
EXIT;

2. 建立批次檔 (log.bat)

@ECHO OFF
REM 連線字串:用戶/密碼@TNS別名
REM 輸出導向 log.txt 記錄執行結果
sqlplus cssp/cssp@gxCSSp @H:\bat_sql\log.sql > log.txt
EXIT

3. 執行結果驗證 (log.txt 內容範例)

SQL*Plus: Release 10.1.0.2.0 - Production on Thu Apr 7 18:26:03 2011
Copyright (c) 1982, 2004, Oracle.  All rights reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

Table created.

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

資料庫中確認 LOG 表已成功建立。

場景二:批次檔呼叫資料庫內預存程序

假設資料庫已存在預存程序 PRODUCE_LOG,修改 SQL 檔內容為:

EXEC PRODUCE_LOG;
EXIT;

批次檔不變,執行即可調用預存程序。若需傳參數,SQL 寫法:EXEC PRODUCE_LOG('param1', 123);

進階技巧與最佳實務

需求做法
隱藏密碼使用 sqlplus /nolog 搭配腳本內 CONN user/pass@tns,或採用 Oracle Wallet
錯誤處理SQL 腳本加入 WHENEVER SQLERROR EXIT FAILURE ROLLBACK,批次檔檢查 %ERRORLEVEL%
多腳本依序執行批次檔依序呼叫多個 sqlplus ... @script.sql,或建立主腳本 @master.sql 內含 @script1.sql @script2.sql
記錄時間戳批次檔開頭 ECHO %DATE% %TIME% >> log.txt
無互動模式加入 SET FEEDBACK OFF VERIFY OFF HEADING OFF PAGESIZE 0 乾淨輸出

Linux/Unix 環境對應寫法 (Shell Script)

#!/bin/bash
# run_sql.sh
export ORACLE_HOME=/u01/app/oracle/product/11.2.0
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=ORCL

sqlplus -s /nolog < /tmp/sql_output.log
CONN user/pass
@/scripts/myscript.sql
EXIT
EOF

# 檢查執行狀態
if [ $? -eq 0 ]; then
  echo "SQL executed successfully"
else
  echo "SQL execution failed"
fi

結語:批次檔結合 SQL*Plus 是 Oracle 自動化部署、排程維護、資料遷移的輕量級利器。掌握導向輸出、錯誤捕獲與無互動模式,可構建穩健的自動化流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved