2011-05-26 139 views
1

我有一個更新某個表的SQL文件。但是,表名取決於安裝軟件的計算機名稱。 (如:TableFooBar-MyMachine)。我必須編寫一個調用Oracle SQL腳本的批處理文件來更新此表。將參數從批處理文件傳遞給Oracle SQL文件

所以,BatchFile - >更新。 Sql - > TableFooBar-MyMachine

更新。 Sql將具有如下語句:

Update TableFooBar-<Machine-Name> where fooid = -99; 

此批處理文件需要在許多機器上運行。實際上在這些表上有很多更新語句。我不希望人們編輯sql文件。相反,如果我在批處理文件中設置計算機名稱並將其傳遞給sql,那麼我已經完成了很多工作! 如何將機器名稱參數傳遞給.sql文件以實現此目的?

回答

6

你可以使用置換變量

update.sql

-- 
Update TableFooBar-&1 set column_foo='bar' where fooid = -99; 
-- 

,然後調用

sqlplus foo/[email protected] @update.sql <Machine-Name> 
+0

+1,正想說相同。但是,您在sqlplus調用中省略了參數:sqlplus foo/bar @ db @ update.sql <機器名稱> – DCookie 2011-05-26 15:01:42

+0

@DCookie:<機器名稱> - 是調用參數:) – schurik 2011-05-26 15:06:15

+0

Oopps,沒有看到它一些原因。格式幫助:-) – DCookie 2011-05-26 15:19:15

2

是的,您可以通過從BATCH文件創建SQL文件來執行此操作。

它應該是這樣的:

@echo off 
set SQL = update.sql 
ECHO connect username/[email protected] 
ECHO Prompt Updating tables > %SQL% 
ECHO Update TableFooBar-%1 where fooid = -99; >> %SQL% 

sqlplus @update.sql 
相關問題