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

存儲過程update

發布時間: 2025-06-30 09:01:33

1. 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了。

2. ORACLE中怎麼執行存儲過程

在Oracle資料庫中執行存儲過程的方式相對簡單。使用SQL*Plus工具可以直接運行存儲過程,具體命令為:

在SQL*Plus中,你可以使用exec 存儲過程名命令來執行存儲過程。如果存儲過程需要傳遞參數,那麼你需要在命令中寫明參數。例如,如果存儲過程名為my_procere,並且需要兩個參數,你可以這樣調用它:

exec my_procere(參數1, 參數2);

參數的具體類型和值應根據存儲過程的定義進行設置。確保參數數量和類型與存儲過程要求一致。如果不提供正確的參數,可能會導致執行失敗或產生錯誤結果。

例如,假設有一個存儲過程update_user_info,它需要三個參數:用戶ID、用戶名和電子郵件地址,你可以這樣調用:

exec update_user_info(123, '張三', '[email protected]');

這樣調用存儲過程時,參數值會被傳遞給存儲過程,存儲過程根據這些參數執行相應的操作。

注意,執行存儲過程時,如果存儲過程內部有異常處理邏輯,它會根據異常處理規則返回結果或錯誤信息。執行過程中如果出現錯誤,SQL*Plus會顯示錯誤信息,幫助你了解問題所在。

此外,對於一些復雜的存儲過程,可能還需要查看存儲過程的源代碼,以確保參數傳遞的正確性。你可以通過以下命令查看存儲過程的定義:

desc 存儲過程名;

這將顯示存儲過程的參數列表和返回類型,幫助你更好地理解存儲過程的使用。

總結來說,在Oracle中使用SQL*Plus執行存儲過程,只需使用exec 存儲過程名(參數列表)的命令,確保參數正確無誤,執行過程即可順利進行。

3. UPDATE 存儲過程

先在資料庫中創建test表,表中有列名為name,類型為varchar(50)
然後先執行
create procere proc_insert
@name varchar(50)
as
begin
insert into test values(@name)--插入數據
end
go
create procere proc_update
@newname varchar(50),@oldname varchar(50)
as
begin
update test set name=@newname where name=@oldname--更新數據
end
go
--其中proc_insert為存儲過程名,可自定義 procere可使用簡寫proc
上面執行完成後調用存儲過程
exec proc_insert '曉華'--將"曉華"添加到test表中
exec proc_update '小明','曉華' --將表中'曉華' 改為'小明',必須與存儲過程變數順序相同
exec proc_update @oldname='小明',@newname='曉華'--與存儲過程變數順序可以不同

drop procere proc_insert 刪除存儲過程proc_insert.

4. 存儲過程中 ,如何先select出一個結果, 再insert或update到另一個表中

create procere myproc

as

begin
declare @p1 varchar(100)
declare @p2 int
select @p2=count(*) from table1 --第一種賦值方式
set @p1='第二種賦值方式'
insert table2 (col1,col2) values(@p1,@p2) --插入方式
update table3 set col3=@p2,@col4=@p1 where id=5 --更新/update方法

end

5. 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#';

熱點內容
圖片處理清晰用什麼伺服器 發布:2025-06-30 14:01:29 瀏覽:162
怎麼配置好的聲音 發布:2025-06-30 13:53:33 瀏覽:418
配置文件為什麼配內網 發布:2025-06-30 13:52:19 瀏覽:365
coc用腳本 發布:2025-06-30 13:52:08 瀏覽:249
dulinux命令 發布:2025-06-30 13:18:55 瀏覽:406
怎麼壓縮物品 發布:2025-06-30 13:12:53 瀏覽:976
sql完整性約束 發布:2025-06-30 13:09:27 瀏覽:262
access資料庫宏 發布:2025-06-30 13:09:25 瀏覽:136
java程序訪問網頁 發布:2025-06-30 13:01:25 瀏覽:64
安卓導航4g版區分看哪裡 發布:2025-06-30 13:01:14 瀏覽:758