2011-03-13 39 views
0

我完全不熟悉腳本技術。命令行腳本根據列值刪除Oracle記錄

我的要求是

  1. 要通過DOS腳本連接oracle
  2. 基於列的值需要刪除特定的記錄

如:基於

emp sal pt_dt 
a  23  22-02-11 
b  34  20-01-10 
c  45  23-09-85 
d  56  30-3-11 

在30-3-11(pt_dt列)中,我需要刪除記錄d。

OS - Windows XP中 DB - Oracle 10g中

回答

3

最簡單的方法是先寫你的SQL(例如deleterec.sql)腳本,然後從批處理(例如deleterec.bat)腳本調用它。

deleterec.sql的例子內容:

DELETE emp WHERE pt_dt = TO_DATE('30-03-2011','DD-MM-RRRR'); 

deleterec.bat的例子內容:

sqlplus.exe scott/[email protected] @deleterec.sql 

(更換斯科特/老虎@ ORCL與您的用戶名,密碼和數據庫實例)

+0

非常感謝您的及時幫助 – Alagusubramanian 2011-03-17 14:11:55

1

你可以這樣寫一個.bat:

@echo off 
if %%1X==X goto noparam 
echo DELETE FROM emp e WHERE e.emp = '%%1' > deleterec.sql 
sqlplus.exe scott/[email protected] @deleterec.sql 
delete deleterec.sql 
goto end 
:noparam 
echo Usage: %%0 {employee id} 
goto end 
:end 
echo Bye! 

我承認我偷了Jeffrey答案的sqlplus調用。 :-o

+0

忘了提及這是相當危險的。任何嘗試這樣做的批處理是。在這種特殊情況下,當有人輸入員工ID'';下載數據庫; - ,你會遇到麻煩的。如果你很聰明並且刪除了刪除數據庫的權限,他們仍然可以寫'OR e.emp IS NOT NULL OR e.emp IS NULL' .... – GolezTrol 2011-03-14 00:36:05