我在AIX上使用ksh。創建了一個unix腳本,它生成創建或替換視圖 ...和GRANT ..語句,它們被放置在一個單獨的.txt文件中。現在我需要在Oracle中執行文件中的內容(大約有300個視圖創建和授權語句),我需要記錄即將執行的sql語句以及Oracle是否創建視圖的反饋。 我摘錄竟把Unix到Sqlplus - 記錄要執行的SQL語句和執行結果
sqlplus -s username/[email protected] <<EOF
SET ECHO ON;
SET NEWPAGE 0;
SET PAGESIZE 0;
SET LINESIZE 200;
SET LONG 10000000;
SET TRIMSPOOL ON;
SET HEADING OFF;
SET FEEDBACK ON;
SET VERIFY ON;
SET TERMOUT OFF;
SET SQLBLANKLINES ON;
SPOOL ${drctry}/${v_timestamp}_sql_execution_log.txt
@${drctry}/${v_date}_sql_statements.txt
SPOOL OFF;
EXIT;
EOF
如果該文件的內容_ $ {} v_date是_sql_statements.txt_
CREATE OR REPLACE VIEW V_TABLE1 AS SELECT * FROM TABLE1;
GRANT SELECT ON V_TABLE1 TO USER1;
...
CREATE OR REPLACE VIEW V_TABLE300 AS SELECT * FROM TABLE300;
GRANT SELECT ON V_TABLE300 TO USER300;
預期輸出:
CREATE OR REPLACE VIEW V_TABLE1 AS SELECT * FROM TABLE1;
View created
GRANT SELECT ON V_TABLE1 TO USER1;
Grant succeeded
...
CREATE OR REPLACE VIEW V_TABLE300 AS SELECT * FROM TABLE300;
View created
GRANT SELECT ON V_TABLE300 TO USER300;
Grant succeeded
經過一番搜索,發現List選項;但是它只記錄最後一條語句,如果我們有超過1條語句,這個語句不適合這裏。在Teradata BteqECHOREQuired屬性可以設置爲ON爲此任務。但我不確定在Oracle中。也試過 sqlplus -s username/[email protected] <<EOF > ${drctry}/${v_timestamp}_unix_sql_log.txt
但仍然沒有運氣。一旦我解決了這個問題,將會更改密碼硬編碼;感謝您的時間:)
只是好奇的是刷新過程的這一部分或什麼? – mmmmmpie