當前位置:首頁 » 存儲配置 » oracle存儲過程沒法編譯

oracle存儲過程沒法編譯

發布時間: 2023-09-06 03:47:58

『壹』 ORACLE 存儲過程無法編譯,編譯就卡死

你怎麼查的鎖?v$locked_object?dba_ddl_locks查了沒,可能是ddl的鎖,如果不能編譯,一編譯就死,也可能是ddl的鎖導致的,以前碰到過。如果能找到鎖,那就簡單了。
不過還碰到過一種特別扯淡的情況,關掉自己的連接,然後換一台電腦從新來過,就OK了,這種情況也碰到過。

『貳』 ORACLE 存儲過程被鎖,編譯不了,怎麼解鎖

一些ORACLE中的進程被殺掉後,狀態被置為"killed",但是鎖定的資源很長時間不釋放,有時實在沒辦法,只好重啟資料庫。現在提供一種方法解決這種問題,那就是在ORACLE中殺不掉的,在OS一級再殺。
1.下面的語句用來查詢哪些對象被鎖:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id=o.object_id and l.session_id=s.sid;
2.下面的語句用來殺死一個進程:
alter system kill session '24,111'; (其中24,111分別是上面查詢出的sid,serial#)
【注】以上兩步,可以通過Oracle的管理控制台來執行。
3.如果利用上面的命令殺死一個進程後,進程狀態被置為"killed",但是鎖定的資源很長時間沒有被釋放,那麼可以在os一級再殺死相應的進程(線程),首先執行下面的語句獲得進程(線程)號:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24 (24是上面的sid)
4.在OS上殺死這個進程(線程):
1)在unix上,用root身份執行命令:
#kill -9 12345(即第3步查詢出的spid)
2)在windows(unix也適用)用orakill殺死線程,orakill是oracle提供的一個可執行命令,語法為:
orakill sid thread
其中:
sid:表示要殺死的進程屬於的實例名
thread:是要殺掉的線程號,即第3步查詢出的spid。
例:c:>orakill orcl 12345

『叄』 ORACLE存儲過程批量未編譯

對存儲過程中用到的表進行過alter處理
譬如你對存儲過程中用到的表a,加了一個欄位,雖然對存儲過程中整體內容不影響,但是alter處理後,你會發現,這些存儲過程變成未編譯通過的了,這個時候只要重新編譯一下就行,當然也有alter後,存儲過程編譯不過去的情況,這個時候你就需要重新寫里邊的內容了

『肆』 oracle 創建存儲過程報錯, PACKAGE BODY SCOTT.EMP_SAL_MANAGEMENT 編譯錯誤

子程序或游標 'P_P_BONUS' 已在程序包說明中聲明, 必須在程序包體中對其進行定義。意思是你已經聲明了這個存儲過程P_P_BONUS,但是沒有在包體(PACKAGE BODY )中定義,就是你還需要在包體中定義P_P_Bonus的實現部分

『伍』 oracle存儲過程 編譯有問題

存儲過程存有三種類型的參數
1、in (只能傳入值,在程序中不能修改)
2、out (必須在程序中賦值)
3、in out (兼顧以上兩點)

所以你的錯誤在於 你的 name 是 in 類型,因此在程序中是不能給其賦值的
select name into name from users;
是錯誤的,改成out 類型就可以了。

『陸』 Oracle 定義存儲過程不能執行怎麼辦

無效狀態有兩種可能:

1、一種是你的存儲過程編輯沒有成功,創建了,但裡面有語法錯誤。

『柒』 寫了一個Oracle存儲過程,編譯沒通過,請幫忙看下哪裡有語法問題。

有錯誤啊!

create or replace procere adjust_inventory(p_goods_id in number,p_adjust_count in number)
as
declare
goods_count number(6,0);
adjust_goods_name number(6,0);
begin
if (p_goods_id is null) then
dbms_output.put_line( '商品ID為空,不能操作');
return;
end if;
select surplus into goods_count from y_goods where goods_id =p_goods_id;
if (goods_count < p_adjust_count) then
dbms_output.put_line( '商品調整數量大於庫存量,不能操作');
return;
end if;
update y_goods set surplus = surplus - p_adjust_count where goods_id = p_goods_id;
select surplus into goods_count from y_goods where goods_id = p_goods_id;
select goods_name into adjust_goods_name from y_goods where goods_id = p_goods_id;
dbms_output.put_line( goods_name || '的庫存成功調整,目前庫存數量為' || goods_count);
end;
end adjust_inventory;

熱點內容
怎麼看出車輛配置是不是舊車 發布:2025-01-28 00:42:42 瀏覽:3
編譯時的程序在哪裡 發布:2025-01-28 00:42:39 瀏覽:345
ftp協議的功能 發布:2025-01-28 00:38:53 瀏覽:251
linux統計ip 發布:2025-01-28 00:38:50 瀏覽:153
游戲解壓泥 發布:2025-01-28 00:38:04 瀏覽:728
curlandroid下載 發布:2025-01-28 00:20:10 瀏覽:873
數控車編程視頻 發布:2025-01-28 00:15:02 瀏覽:967
壓縮機帶電 發布:2025-01-28 00:06:14 瀏覽:195
雲存儲拓撲圖 發布:2025-01-27 23:58:00 瀏覽:830
中央編譯局女博士微博 發布:2025-01-27 23:44:24 瀏覽:698