* 구문에서 동일 테이블을 동시에 사용하여서 INSERT 나 UPDATE 진행시 에러 발생 조치사항;
PROC SQL;
CREATE TABLE TEST AS
SELECT *
FROM SASHELP.CLASS;
QUIT;
* 같은 데이터세트를 양쪽에 참고하여서
기본 복구 옵션(UNDO_POLICY=REQUIRED)에서 에러 발생;
proc sql;
insert into TEST
set NAME = '백승민',
SEX = '남',
AGE = ( CASE WHEN '백승민' THEN 99
ELSE 100 END ),
HEIGHT = ( SELECT COUNT(*) FROM TEST),
WEIGHT = 180;
QUIT;
* 해결책 : UNDO_POLICY=NONE 로 변경하여서 UNDO 로그를 생성 안함
주의점 : 에러 발생시 복구 불가;
proc sql UNDO_POLICY=NONE ;
insert into TEST
set NAME = '백승민',
SEX = '남',
AGE = ( CASE WHEN '백승민' THEN 99
ELSE 100 END ),
HEIGHT = ( SELECT COUNT(*) FROM TEST),
WEIGHT = 180;
QUIT;
* 에러구문
ERROR: 다시 열기을(를) 할 수 없습니다(대상 데이터: WORK.TEST.DATA, 목적: 업데이트 액세스, 컨트롤:
멤버-레벨 컨트롤) (원인: WORK.TEST.DATA을(를) 사용 중임. 은(는) 사용자 본인에 의해 사용 중입니다.
리소스 환경: SQL).
ERROR: PROC SQL could not undo this statement if an ERROR were to happen as it could not obtain
exclusive access to the data set. This statement will not execute as the SQL option
UNDO_POLICY=REQUIRED is in effect.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Lock in the best rate now before the price increases on April 1.