RT
eg:有如下表格
--------------------------------
id name status
--------------------------------
1 test1 1
2 test2 1
3 test2 1
4 test2 1
5 test2 1
6 test2 1
--------------------------分割線--------------------------
以下為SQL陳述句
UPDATE TABNAME SET name='zhangsan' WHERE status = 1
以上陳述句執行后影響行數為6行,現在想問一下各位大神,如何能獲取到這6行的主鍵ID(1,2,3,4,5,6)
先謝過各位
uj5u.com熱心網友回復:
對了,在不使用存盤程序的情況下,只用SQL陳述句能否實作呢??uj5u.com熱心網友回復:
select id from TABNAME WHERE status = 1 and name<>'zhangsan' 這就是需要變更的記錄uj5u.com熱心網友回復:
這樣不是還得在update只有還得執行一句查詢sql嗎,如果并發高,這樣使用這中修改后的值作為查詢條件一定會出問題的
uj5u.com熱心網友回復:
頂一下..
uj5u.com熱心網友回復:
難道你想一個update執行完了還能回傳記錄出來么,要顯示記錄還是得用select,并且先查詢再更新,或者把查詢后的結果集插入到表中,然后進行更新操作uj5u.com熱心網友回復:
查詢出要更新的資料插入到一個表中存放,這個程序可以放到觸發器里uj5u.com熱心網友回復:
頂666666uj5u.com熱心網友回復:
SQL>
SQL> create table test(id int, name varchar(10));
Table created
SQL> begin
2 insert into test values(1,'aaa');
3 insert into test values(2,'bbb');
4 insert into test values(3,'ccc');
5 insert into test values(4,'ddd');
6 end;
7 /
PL/SQL procedure successfully completed
SQL> set serverout on ;
SQL> declare
2 type tlist is table of integer index by pls_integer;
3 l tlist ;
4 v_id varchar(10);
5 begin
6 update test set name = name || 'XXX' returning id bulk collect into l;
7 for x in 1..l.count loop
8 dbms_output.put_line(l(x));
9 end loop;
10 end;
11 /
1
2
3
4
PL/SQL procedure successfully completed
SQL> drop table test purge;
Table dropped
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/100779.html
標籤:開發
上一篇:求助大神,新手
下一篇:insert時候觸發器未執行
