BookmarkSubscribeRSS Feed

[SAS 프로그래밍 고수 백승민] [PROC SQL] 동일 테이블을 사용하는 경우 UPDATE 에러

Started ‎06-11-2020 by
Modified ‎06-11-2020 by
Views 112

* 구문에서 동일 테이블을 동시에 사용하여서 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.

Version history
Last update:
‎06-11-2020 10:17 PM
Updated by:
Contributors

sas-innovate-white.png

🚨 Early Bird Rate Extended!

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.

Register now!

Article Labels
Article Tags