首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过游标更新行值

通过游标更新行值
EN

Stack Overflow用户
提问于 2021-06-02 08:08:15
回答 1查看 101关注 0票数 0

我对pl/sql并不熟悉,所以我陷入了困境。我有一个由3列组成的表: package_uid、csms_package_id和标志。前两列被填充,第三列为空。当调用过程时,会填充标志列,其方式是过程比较该表和另一个表中的package_id-s,如果它们是匹配的,则标志应该是'YES‘。这是我的密码:

代码语言:javascript
复制
DECLARE
  package_uid varchar2(256);
  CURSOR abc IS SELECT csms_package_id, PACKAGE_UID, FLAG FROM table1 tpc;
  CURSOR defg IS SELECT package_id FROM table2 tpc2;
BEGIN
  for i in abc  loop
    for j in defg loop
      begin
        if i.CSMS_PACKAGE_ID=j.package_id THEN
          i.flag := 'YES' ;
          DBMS_OUTPUT.PUT_LINE(i.flag);
        end if;
      end;
    end loop;
  end loop;

end;

输出写入“是”的次数是正确的,但我的表没有使用“是”值进行更新。如何更新表中的标志值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-02 08:11:47

您没有更新任何内容;如果您想要这样做,就必须使用UPDATEMERGE语句。

然而,为什么PL/SQL和为什么嵌套循环?看上去效率很低。取而代之的是一个简单的和单一的merge怎么样?

代码语言:javascript
复制
MERGE INTO table1 a
     USING table2 b
        ON (a.package_uid = b.package_id)
WHEN MATCHED
THEN
   UPDATE SET a.flag = 'YES';
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67801271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档