執行腳本的命令在上一節已經講過,再也不重複。html
sqlplus user/password@ip:port/servicename @/path/sqltest.sql;
sqltest的內容及註釋:sql
--這個WHENEVER表示出現錯誤以後,再也不繼續執行,還會盡可能回滾 WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK --select 'OK' from duabbl; --select 'OK' from duiaaal; --輸出執行的語句 set echo on; --將執行結果輸出到文件 spool /tmp/spool.txt; select 'OK' from dual; --創建一個空的無害的存儲過程 create or replace procedure ADisabledSP(timeStamp number, tableName varchar2) is begin if timeStamp<0 then --該條件永遠沒法成立,且使用了輸入參數timeStamp dbms_output.put_line('We are going to operate on table ' || tableName); --使用了輸入參數tableName end if; end; --這個/在命令行中執行是必須的,表示執行,否則,只有換行 / select 'OK' from dual; select 'OK' from dzual; --dual數據庫經常使用於測試目的 select 'OK' from dual; spool off; --這個也必須,否則,腳本執行完成以後,會hang在sqlplus命令行中,不退出 exit;
查看存儲過程的幾個SQL,注意有的顯示一行一行的,有的顯示名字,有的顯示內容:數據庫
select name from user_source where type='PROCEDURE'; select text from all_source where name = 'pro_name'; select * from user_procedures;
最後一個小技巧,爲何在的腳本里,會出現一個/右斜槓呢?????oracle
通常在end;(注意有分號)後加反斜槓/,表明是要執行某個存儲過程,若是沒有反斜槓,則表明是普通換行。這種狀況通常用於oracle中的命令窗口。
https://zhidao.baidu.com/question/560015241204373364.html測試