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

时间:2018-03-07 15:17:25

标签: plsql concatenation string-concatenation

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

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

1 个答案:

答案 0 :(得分:1)

当然,您应该提供更多信息。与此同时,由于我有空闲时间,有两个选项:第一个不需要任何循环(您提到过)但使用了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>

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