暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 使用wit子句或分析函数更新表

askTom 2017-06-16
291

问题描述

嗨,

日安!

从最近几天开始,我遇到了许多情况,需要根据一些分析函数输出更新表。因为,我的表没有任何主键,所以我对使用SQL进行更新有限制,因此我留下了使用PL/SQL的唯一选择。由于我的表太大,更新将在许多行 (某些情况下高达数百万),我面临严重的糟糕性能。

因此,我试图在更新期间使用一个带有子句,但我遇到了错误。您能否建议解决方案或其他其他方法来执行此操作:

x为
(选择rowid,当计数 (不同的leg_division) 超过 (由leg_distributor_vendor分区) = 1时的情况,否则为空sap_division结束
来自sap_x_tt _ 协议 _ ss1
其中dep_error_code为空,val_error_code为空)
更新sap_x_tt _ 协议 _ ss1 y,x
设置sap_division = NULL
其中x.rowid = y.rowid;
从v $ 版本中选择 *;

错误: ORA-00928: 缺少SELECT关键字

让我知道是否需要测试脚本。

问候,
阿米特

专家解答

仅使用SELECT语句。所以这里有一个例子,你把它放在更新的地方

SQL> create table t as select * from dba_objects ;

Table created.

SQL>
SQL> with x as
  2    ( select rowid r from t where owner = 'SCOTT' )
  3  update t
  4  set object_id = 100
  5  where rowid in ( select r from x );
update t
*
ERROR at line 3:
ORA-00928: missing SELECT keyword


SQL>
SQL> update t
  2  set object_id = 100
  3  where rowid in (
  4  with x as
  5    ( select rowid r from t where owner = 'SCOTT' )
  6  select r from x
  7  );

59 rows updated.
复制


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论