2011-03-13 3 views
0

저는 스크립팅 기술에 완전히 익숙하지 않습니다.열 값을 기준으로 Oracle 레코드를 삭제하는 명령 줄 스크립트

내 요구 사항은

  1. 가 DOS 스크립트를 통해 오라클을 연결하는 것입니다
  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 - 윈도우 XP DB - 오라클 10g

답변

3

간단한 방법 (예를 들어 deleterec.sql) 스크립트, 다음 배치 (예를 들어, deleterec.bat) 스크립트에서 호출 먼저 SQL을 작성하는 것입니다. deleterec.sql의

예 내용 : deleterec.bat의

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

예 내용 :

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

가 (스콧/사용자 이름, 암호 및 데이터베이스 인스턴스와 호랑이 @의 ORCL 교체)

+0

시기 적절한 도움을 주셔서 대단히 감사합니다. – Alagusubramanian

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! 

제프리의 대답에서 sqlplus 호출을 훔쳤습니다. : -o

+0

이것은 위험하다는 것을 잊어 버렸습니다. 이것을 일괄 적으로 시도하려는 시도가 있습니다. 이 특별한 경우 누군가가 직원 ID' '를 입력하면; 드롭 데이터베이스; - ', 당신은 곤경에 처할거야. 똑똑하고 데이터베이스를 삭제할 수있는 권리를 제거하면 여전히 ''또는 e.emp IS NOT NULL 또는 e.emp IS NULL'을 쓸 수 있습니다 .... – GolezTrol

관련 문제