PL/SQL 在 UPDATE 语句中将列与变量连接起来

PL/SQL concatenate column with variable in UPDATE statement

我想将现有用户名更新为以下格式 user+(循环迭代器的值)。有什么建议吗?当前语句执行后显示值'app2nd'

UPDATE users
SET user_name = 'user'|| v_count                
WHERE  id = c_id;

当然,您应该提供更多信息。同时,由于我有一些空闲时间,有两个选项供您选择:第一个不需要任何 loop(您提到的)但利用 ROWNUM:

SQL> select * from test;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> update test set
  2    dname = 'user' || rownum       --> this
  3    where deptno >= 20;

3 rows updated.

SQL> select * From test;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 user1          DALLAS
        30 user2          CHICAGO
        40 user3          BOSTON

SQL>
SQL> rollback;

Rollback complete.

SQL>

另一种选择,LOOP发明,因为你没有解释你有哪种循环:

SQL> begin
  2    for cur_r in (select deptno, dname,
  3                    row_number() over (order by deptno) rn
  4                    from dept)
  5    loop
  6      update test set
  7        dname = 'user' || cur_r.rn
  8        where deptno = cur_r.deptno;
  9    end loop;
 10  end;
 11  /

PL/SQL procedure successfully completed.

SQL> select * From test;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 user1          NEW YORK
        20 user2          DALLAS
        30 user3          CHICAGO
        40 user4          BOSTON

SQL>

如果有帮助,那很好。如果没有,您知道该怎么做 - 以诗意的方式表达自己。