我想将现有用户名更新为以下格式user +(循环迭代器的值)。有什么建议?当前语句在执行后显示值'app2nd'
UPDATE users
SET user_name = 'user'|| v_count
WHERE id = c_id;
答案 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>
如果有帮助,那很好。如果没有,你就知道该怎么做 - 以诗意的方式表达自己。