oracle刪除表存儲過程
⑴ oracle怎麼刪除存儲過程,函數,觸發器,的語句
刪除存儲過程 DROP PROCEDURE xxxx
刪除函數 DROP FUNCTION xxxx
刪除觸發器 DROP TRIGGER xxxx
⑵ 怎麼樣用oracle存儲過程循環清空多張的表數據
你這多張表要有某種聯系。
比如說表名按照日期取名:
這樣可以按照這種規律將表名作為參數傳入到存儲過程中去。
過程中有條件,循環語句來控制。
你試試看。
如果有問題請詳細說明。
⑶ oracle 怎麼刪除 包 TESTPACKAGE 中的存儲過程
寫的內容看不明白,你想刪除的這個存儲過程 屬不屬於 創建包的語句裡面的? 如果是屬於包里的存儲過程,那麼打開package\package body,將對應存儲過程刪除即可。
如果不屬於包內的存儲過程,直接drop procere 存儲過程名; 即可。
⑷ oracle的存儲過程不能使用drop語句嗎
存儲過程裡面, 一般只寫 DML 的語句。
也就是基本的 SELECT . INSERT, DELETE , UPDATE 這一類的語句。
如果你要在存儲過程裡面, 執行 DDL 語句。
也就是 CREATE, ALTER, DROP 這一類的語句。
那麼需要使用動態 sql 來處理。
也就是
EXECUTE IMMEDIATE ( 'CREATE TABLE test( id int ) ' );
EXECUTE IMMEDIATE ( 'DROP TABLE test ' );
這樣的方式來處理。
對於 DDL 語句, 這類語句, 如果成功了, 就生效了, 不能回滾的。
也就是
當你 Drop Table 某個表的時候, 執行成功了, 表就被刪除了。
不需要你 Commit 的。
你也無法Rollback , 然這個表不刪除了。
⑸ oracle中 kill 正在執行的存儲過程
存儲過程卡死了,一般是好幾個人同時編譯導致的,同時往一個表插數據等操作就會鎖死此表。
select a.SID,a.SERIAL#,a.USERNAME
from sys.v_$session a,sys.dba_objects b,v$locked_object c
where b.object_id = c.OBJECT_ID
and a.SID = c.SESSION_ID
and b.object_name = '表名';
用上面 的語句找到存儲過程中主要用插入表的sid 和SERIAL#
然後用下面的語句殺掉。
alter system kill session 'sid ,SERIAL#';
如果殺不掉的話,等所有人釋放,或者從啟服務。
⑹ ORACLE創建一個存儲過程(刪除指定數據)
sql_dl='delete from report_data t where t.address in ('廣東省')'
這行雙重單引號,你不覺得有問題嗎?需要轉義一下。
還有個問題,你的這條sql明明可以不用in的,是還有別的省份沒寫進來嗎?如果沒有別的省份,建議使用=而不要用in,因為in與=的性能差距可是很大的,數據量越大,性能差距越明顯。
⑺ Oracle 存儲過程 刪除表記錄時刪除不存在的記錄也是顯示刪除成功
刪除不存在的數據並不會促發Oracle的異常
對於delete from dept where deptno=p_deptno;
判斷是否有數據被刪除可以用sql%rowcount,sql%notfound 來判斷
if sql%rowcount = 0 then
dbms_output.put_line('部門刪除失敗...');
end if;
或者
if sql%notfound then
dbms_output.put_line('部門刪除失敗...');
end if;