oracle存儲過程刪除數據
㈠ 求一個oracle的批量刪除的存儲過程
sql">declarecursorc1isselect*fromtable_A;
li_linenonumber(8);
begin
li_lineno:=1;
fortinc1loop
deletefromtable_Awherexbie00='1';
ifmod(li_lineno,1000)=0then
commit;
endif;
li_lineno:=li_lineno+1;
endloop;
end;
/
㈡ oracle 通過存儲過程 刪除一張表的n天前的數據。
delete from a_b_c_123 where "日期"=(
select 「日期" from a_b_c_123
where "日期=N天")
以上語句能看懂吧?最後一句可以換變數,然後整個寫作存儲過程
㈢ Oracle存儲過程中如何獲得DELETE語句執行後刪除的記錄數
存儲過程中可以通過在delete語句執行的前後分別select count(*) from tablename 查詢出當前表的記錄條數,然後相互相減就可以得到delete語句刪除的條數。
createorreplaceprocerep_procereas
numinteger;
beforenuminteger;
afternuminteger;
begin
selectcount(*)intobeforenumfromtb1;
EXECUTEIMMEDIATE'deletefromtb1where.';
selectcount(*)intoafternumfromtb1;
num:=beforenum-afternum;
end;
㈣ oracle刪除多張表數據, 存儲過程
報什麼錯,能把錯誤貼一下嗎
另外注意delete語句和select還是有區別的,delete時只能刪除滿足條件的行,所以在delete後面不用指定列欄位,即
delete D2_HC t where fkpkid in (d2_cpkid) and hctype='2';
㈤ 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;
㈥ ORACLE創建一個存儲過程(刪除指定數據)
sql_dl='delete from report_data t where t.address in ('廣東省')'
這行雙重單引號,你不覺得有問題嗎?需要轉義一下。
還有個問題,你的這條sql明明可以不用in的,是還有別的省份沒寫進來嗎?如果沒有別的省份,建議使用=而不要用in,因為in與=的性能差距可是很大的,數據量越大,性能差距越明顯。