2010-03-11 4 views
2

현재 SCAN 상태를 어떻게 감지하고 변경 한 후에 되돌리시겠습니까?변수 값을 묻는 메시지가 표시되면 스캔 상태를 되돌리기

문제의 스크립트로부터의 exerpt :

SET SCAN OFF 
SET ECHO ON 
SET SQLBLANKLINES ON 

SET SCAN ON 
UPDATE TABLE_NAME SET CREATED_BY = &&created_by; 
SET SCAN OFF 

문제는 스크립트가 첫 번째 줄 (SET SCAN OFF)를 가지고 있지 않은 경우, 다음 사용자에게 메시지를 표시하는 코드가 SCAN 상태를 설정하지해야한다는 것입니다 그 후에. 의사 코드 솔루션 : 코드 첫 줄을 제거하여 변경되는 경우 예상대로 즉, 스크립트의 나머지 부분은 여전히 ​​때문에이 POP SCAN STATE을 corresonding에, 작동 있도록

-- The next line might not exist, or be "SET SCAN ON". 
SET SCAN OFF 
SET ECHO ON 
SET SQLBLANKLINES ON 

-- Remember if the scanning was on or off. 
PUSH SCAN STATE 
SET SCAN ON 
UPDATE TABLE_NAME SET CREATED_BY = &&created_by; 

-- Revert scanning to its former state. 
POP SCAN STATE 

라인이 PUSH SCAN STATE 상태를 기억합니다.

+0

맨 위에 '표시 스캔'을하고 필요할 경우 수동으로 재설정 할 수 있습니다. –

+0

@ Jeffrey : 자동화 된 솔루션을 찾고 있습니다. –

+0

나는 그것을 모았다. 그래서 나는 논평을했지만 대답은하지 않았다. 나는 해결책이 없을 수도 있다고 생각한다. –

답변

1

는 SQL 플러스 STORE 명령은 불행하게도 SCAN 상태 (SQL 플러스 9.2.0.1.0)를 저장하지 않는 것,이 작업을 수행 할 예정이다. 다른 설정 (TIMING)을 사용하여 시연 해 보겠습니다.

SQL> show timing 
timing OFF 
SQL> -- save parameters into an os file 
SQL> store set param.sql create 
Created file param.sql 
SQL> -- run script 
SQL> SET TIMING ON 
SQL> show timing 
timing ON 
SQL> -- reset state 
SQL> @param.sql 
SQL> show timing 
timing OFF 
+0

감사합니다. 좋은 아이디어와 나에게 탐구 할 수있는 지역을 제공합니다. 너무 나쁘면 실제로 문제가 해결되지 않습니다. –

관련 문제