我完全不熟悉腳本技術。命令行腳本根據列值刪除Oracle記錄
我的要求是
- 要通過DOS腳本連接oracle
- 基於列的值需要刪除特定的記錄
如:基於
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中
我完全不熟悉腳本技術。命令行腳本根據列值刪除Oracle記錄
我的要求是
如:基於
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中
最簡單的方法是先寫你的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與您的用戶名,密碼和數據庫實例)
你可以這樣寫一個.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
忘了提及這是相當危險的。任何嘗試這樣做的批處理是。在這種特殊情況下,當有人輸入員工ID'';下載數據庫; - ,你會遇到麻煩的。如果你很聰明並且刪除了刪除數據庫的權限,他們仍然可以寫'OR e.emp IS NOT NULL OR e.emp IS NULL' .... – GolezTrol 2011-03-14 00:36:05
非常感謝您的及時幫助 – Alagusubramanian 2011-03-17 14:11:55