當前位置:首頁 » 存儲配置 » oracle存儲過程update

oracle存儲過程update

發布時間: 2022-06-01 12:43:13

Ⅰ oracle 存儲過程循環執行update語句

其實二樓寫的最簡單,但對於新手,最好別那麼寫,至於1樓,如果數據不是很多,沒必要搞個游標。你也可以看看我寫的

create or replace procere P_Update(o_vc_message out varchar2)
is
type column1 is table of table1.column1%type index by binary_integer;
col1s column1;
type rid is table of rowid index by binary_integer;
rids rid;
temp table1.column1%type;
begin
select column1,rowid bulk collect into col1s,rids from table1;
if (column1.count != 0) then
for i in col1s.first..col1s.last loop
temp := col1s(i);--處理 col1s(i) 想幹嘛幹嘛
update table1 set column1 = temp where rowid = rids(i);
end loop;
end if;
o_vc_message := 'OK!';
exception
when others then
o_vc_message := 'exception happend.' || sqlcode || sqlerrm;
rollback;
return;
end P_Update;

如果僅僅是簡單處理column1,比如加1什麼的,就別搞那麼復雜,一個sql就ok了。

Ⅱ oracle的存儲過程中,有2條update語句,那2次update是默認在同一個事務中還是分別執行相互沒有影響

存儲過程
裡面。
如果你沒有在兩條
SQL
語句之間,寫
Commit
/
rollback
之類的語句。
那麼這2條
update
是默認在一個事務裡面的。

Ⅲ oracle存儲過程不能寫update語句

你的commit呢?
你第一次update沒有問題,可是你這是一個循環,當第二次update時就會出現問題的,你跟蹤下,第一次執行時應該是通過的,報錯應該是第二次執行的時候報的。

Ⅳ oracle存儲過程update執行很慢(50多萬條需要更新),求大神指點

哥們,使用中間表試試. 也許能快一些
-- 1.先把需要修改的數據查詢出來 ,放入中間表1
DROP TABLE T_TABLE1;
CREATE TABLE T_TABLE1 AS SELECT * FROM T_TABLE WHERE ...;
DELETE TABLE T_TABLE1 WHERE ...;
-- fun_c(C) 代表C 欄位更新邏輯的函數.
DROP TABLE T_TABLE2;
CREATE TABLE T_TABLE2 AS SELECT A,B,fun_c(C),... FROM T_TABLE1;
INSERT INTO T_TABLE1 SELECT * FROM T_TABLE2;

Ⅳ oracle 存儲過程 update set select 更新不成功

改成 update tmp_tableA a set(a.xxx,a.xxxx) =(select b.xxx,b.xxx from tableB b where a.phone_no=b.phone_no and rownum=1)where a.phone=v_date.phone_no ,確認一下是不是只對應出一條。

嘗試換一種游標方式:
在開頭部分先定義游標和變數
TYPE cur IS REF CURSOR;
my_cur cur;

lc_phoneno varchar2(30);
在過程中這樣使用:
open my_cur for select phone from tmp_tableA;

loop
fetch mu_cur into lc_phoneno;
EXIT WHEN my_cur%NOTFOUND;

update tmp_tableA a set(a.xxx,a.xxxx) =(select b.xxx,b.xxx from tableB b where a.phone_no=b.phone_no )where a.phone=lc_phoneno;

end loop;
commit;
close my_cur;

Ⅵ oracle存儲過程中update語句一直在執行中,無法更新完成

可能這個表被別的用戶鎖了;

select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo, dba_objects ao, v$session sess
where ao.object_id = lo.object_id
and lo.session_id = sess.sid;

--殺掉會話
alter system kill session 'sid,serial#';

Ⅶ oracle存儲過程中update語句的提交問題

後面是必須跟commit的,
看下是不是打開了自動提交
show
autocommit;
如果是on的話,就能解釋你這個是什麼情況了。
還有就是你在執行之後是不是做了用戶切換,切換用戶,用的是connect命令,是會提交事務的。

Ⅷ oracle存儲過程update select怎麼寫急要。。。

update select屬於關聯更新,方法如下。

有以下兩張表:

熱點內容
郵政工會卡初始密碼是什麼 發布:2024-11-13 09:39:37 瀏覽:507
SQL傳入變數 發布:2024-11-13 09:36:38 瀏覽:462
tc演算法 發布:2024-11-13 09:30:37 瀏覽:965
python2712 發布:2024-11-13 09:30:15 瀏覽:634
smsforandroid 發布:2024-11-13 09:20:22 瀏覽:676
如何查找公司郵件伺服器與埠 發布:2024-11-13 08:55:12 瀏覽:531
pythonrequests文件 發布:2024-11-13 08:52:27 瀏覽:223
速騰安卓大屏什麼牌子好 發布:2024-11-13 08:49:59 瀏覽:665
黑岩上傳 發布:2024-11-13 08:49:18 瀏覽:34
Python高清 發布:2024-11-13 08:41:20 瀏覽:738