oracle存儲過程刪除表
A. oracle刪除一些表數據,然後釋放表空間的存儲過程
create or replace procere ttt is
begin
delete from bbb where。。。。。。 ;
commit;
execute immediate 'create table aaa as select * from bbb';
commit;
--刪除表bbb所有數據
execute immediate 'truncate table bbb';
commit;
--將臨時表aaa的數據轉移到bbb表中
insert into bbb select * from aaa;
commit;
--刪除臨時表aaa
execute immediate 'drop table aaa';
commit;
end;
順便說一句,你之前為什麼要delete表bbb里的數據呢?還有,你存儲過程里沒end
---------補充------
||是用來區分普通欄位和變數欄位的
他那個寫法不和我這個一樣嗎?
他那個只不過把我單引號里的sql設置成了一個變數,叫str
B. oracle刪除多張表數據, 存儲過程
報什麼錯,能把錯誤貼一下嗎
另外注意delete語句和select還是有區別的,delete時只能刪除滿足條件的行,所以在delete後面不用指定列欄位,即
delete D2_HC t where fkpkid in (d2_cpkid) and hctype='2';
C. 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;
D. oracle 在sql developer里批量刪除表
創建存儲過程
createorreplacePROCEDURESP_DROPTABLE
(v_begintimeinvarchar2,
v_endtimeinvarchar2)
as
v_tablenamevarchar2(256);
cursorcur_tablenameis
selectobject_namefromuser_objectswhereobject_type='TABLE'andto_char(CREATED,'yyyy-mm-dd')
betweenv_begintime
andv_endtimeorderbyCREATEDdesc;
begin
opencur_tablename;
loop
fetchcur_tablenameintov_tablename;
exitwhencur_tablename%notfound;
executeimmediate'droptable'||v_tablename||'';
endloop;
closecur_tablename;
endsp_droptable;
執行存儲過程
begin
SP_DROPTABLE('1999-01-01','2999-12-31');
end;
這個是把表幹掉,不是清空數據哦,有疑問請追問
E. 怎麼樣利用存儲過程實現(oracle )的添加、刪除、查詢、修改啊
列個表,里邊我一樣給你寫個例子,你看著學學,我盡量給你做出注釋
--建一個學生表
create table student (id int,name varchar2(10));
--插入兩條測試數據
insert into student values (1,'張三');
insert into student values (2,'李四');
commit;
-------------用存儲過程添加id為3,姓名為王五的學生-----------
create or replace PROCEDURE P_INSERT
(v_id int,--定義id變數
v_name varchar2--定義姓名變數)
is
begin
insert into student values (v_id,v_name);--執行插入操作
commit;
end;
執行的時候用下邊的
BEGIN
p_insert(3,'王五');
END;
然後select * from student;
你會發現多了3 王五 這條數據
---------------用存儲過程刪除id為3的學生------------
create or replace PROCEDURE P_DELETE
(v_id int)--定義變數id
is
begin
delete from student where id=v_id;--執行刪除操作
commit;
end;
執行
BEGIN
p_delete(3);
END;
執行完上邊後執行
select * from student;
你會發現id為3的學生沒了
---------------用存儲過程查詢id為2的學生姓名------------
create or replace PROCEDURE P_SELECT
(v_id int)--定義輸入變數id
is
v_name varchar2(10);--定義輸出變數name
begin
select name into v_name from student where id=v_id;--執行查詢
dbms_output.put_line('學生姓名為:'||v_name);--輸出結果
end;
執行
BEGIN
p_select(2);
END;
輸出的結果就是id為2的學生姓名
-----------用存儲過程查詢id為1的學生姓名修改為趙六----------
create or replace PROCEDURE P_UPDATE
(v_id int,--定義要修改的id
v_name varchar2)--定義要修改後的名字
is
begin
update student set name=v_name where id=v_id;--執行修改操作
commit;
end;
執行
BEGIN
P_UPDATE(1,'趙六');
END;
然後你再
select * from student;
你會發現id為1的已經為趙六了
上邊這些都是最簡單的存儲過程,在實際過程中肯定沒這么簡單
還有,我讓你執行的
BEGIN
P_UPDATE(1,'趙六');
END;
這種東西可以當做oracle的job調用,可以定時執行
再有不懂的你再問吧,上邊的僅做參考
累死我了,哈哈
F. 創建oracle存儲過程,要求把一個表的數據導入另一個表中然後刪除原表且要有異常處理和日誌輸出
又是你呀,我再把代碼改改,很簡單,代碼如下
create or replace procere test
is
begin
--兩個表欄位一樣
insert into 表名1 select * from 表名2;
--欄位不一樣
insert into 表名1(欄位1,欄位2,欄位3) select 欄位1,欄位2,欄位3 from 表名2;
--刪除原表數據
delete 表名2
或者
TRUNCATE TABLE 表名2
COMMIT;
WHEN OTHERS THEN --當運行出現異常
dbms_output.put_line(SQLERRM(SQLCODE));--輸出到控制台
end