代码之家  ›  专栏  ›  技术社区  ›  pinegulf

用proc sql更新

  •  -1
  • pinegulf  · 技术社区  · 8 年前

    很好的一天,

    我想更新表,以便标记两列之间的距离。我想用 进程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选项执行 撤消策略=必需有效。

    显然,我不能子查询要更新的数据集。(是的,这在“真正的SQL”中应该是正常的。)

    这是“就这样”还是有聪明的工作?

    1 回复  |  直到 8 年前
        1
  •  1
  •   user667489    8 年前

    如果要更改正在查询的表,请尝试更改proc sql语句:

    proc sql undo_policy=none noprint;
    

    这是日志中错误消息提示的选项。

    推荐文章