美好的一天
我想更新表,以便标记两列之间的距离。我当时正在考虑使用 proc sql 做到这一点。我可以通过几个不同的数据集来做到这一点,但是单个命令会更优雅。
但是,下面的代码给了我以下错误:
proc sql noprint;
update devStuff set flag =1 where portal in
(select distinct(portal) from devStuff
group by country, portal
having abs(max(last_proc) - max(pvm) ) >= 3)
; quit;
错误:您无法重新打开WORK.DEVSTUFF.DATA以进行成员级控件的更新访问,因为 资源环境SQL中正在使用WORK.DEVSTUFF.DATA。 错误:如果发生错误,则PROC SQL无法撤消该语句,因为它无法获取 独占访问数据集。该语句不会作为SQL选项执行 UNDO_POLICY = REQUIRED生效。
显然,我无法对要更新的数据集进行子查询。 (是的,这在'real sql'中应该是正常的。)
这是“按原样”还是有巧妙的解决方法?
答案 0 :(得分:1)
如果要更改要查询的表,请尝试更改proc sql语句:
proc sql undo_policy=none noprint;
这是日志中提示错误消息的选项。