sqlplus執行指令碼檔案時如何傳引數

2021-07-04 01:04:39 字數 1910 閱讀 4340

分類: oracle

d:\test.sql指令碼如下:

[sql]view plain

copy

select

&1 from

&2;  

exit;   

執行時這樣傳引數:sqlplus "scott/tiger@test" @d:\test.sql sysdate dual

注意:引數必須用&[1-9]表示,不然傳不進去,會提示讓手動輸入引數

[sql]view plain

copy

c:\>sqlplus 

"scott/tiger@test"

@d:\test.sql sysdate dual  

d:\>sqlplus "scott/tiger@test"

@d:\test.sql sysdate dual  

sql*plus: release 11.2.0.1.0 production on

星期二 11月 1 21:59:00 2011  

rights reserved.  

連線到:  

oracle database

11g enterprise edition release 11.2.0.1.0 - production  

with

the partitioning, olap, data mining 

andreal

原值    1: select

&1 from

&2  

新值    1: select

sysdate 

from

dual  

sysdate  

--------------

01-11月-11  

從 oracle database

11g enterprise edition release 11.2.0.1.0 - production  

with

the partitioning, olap, data mining 

andreal

開  d:\>  

如果指令碼中有重複用到相同的值,如果&1=&2:

d:\tes2.sql

[sql]view plain

copy

delete

scott.emp 

where

no=&1  

ordeptno=&2;  

commit

;  

執行時,就必須傳2個引數:

[sql]view plain

copy

sqlplus 

"scott/tiger@test"

@d:\test2.sql 10 10  

小竅門: 這時用procedure就可以不用傳多個相同的引數,則只用傳1個引數:

d:\test3.sql

[sql]view plain

copy

declare

var_no number:=&1;  

begin

delete

scott.emp 

where

no=var_no 

ordeptno=var_no;  

commit

;  end

;  

sqlplus "scott/tiger@test" @d:\test3.sql 10

批處理中set 設定變數的用法

oracle異機遷移全過程

參考:

Shell 執行指令碼檔案方法

bin bash printf s n hello world bin sh test.sh bin bash test.shchmod x test.sh 賦予指令碼檔案可執行許可權 test.sh 直接執行指令碼檔案以上執行方式都是在當前shell下開啟乙個子shell程序執行指令碼的,這樣在指...

定時任務執行指令碼檔案

test.sh指令碼 find dir maxdepth 1 mtime 92 name exec rm rf mtime 92 設定時間為91天前 name mail 12 設定檔名稱中包含mail1或者mail2 exec rm rf 查詢完畢後執行刪除操作 r 刪除資料夾 f 強制刪除 固定格...

docker中mysql執行指令碼檔案

從資料庫中匯出指令碼檔案,獲取 sql檔案 將sql檔案匯入虛擬機器中 啟動docker,執行mysql容器 將sql檔案複製到mysql容器中的 home 目錄下 1。查詢mysql容器id docker ps複製檔案到mysql容器中 docker cp mnt hgfs sql 容器id ho...