今天專案突然要用到游標,好久沒有使用了有些生疏,在使用中發現以前沒注意的一些問題,先貼上**
procedure p_insert_wzdeqd(abc varchar2,sj varchar2)
is
v_temp varchar2(30);
v_flows_user wz_dewzqd_mb%rowtype;
cursor flows_user is select xh,mc,gg,dw,dezb,sybm from wz_dewzqd_mb where wz_dewzqd_mb.sybm=abc ;
begin
open flows_user;
loop
fetch flows_user into v_flows_user;
exit when flows_user%notfound;
-- select substr(to_char(systimestamp, 'yyyymmddhh24missff'), 1, 16) into v_temp from dual;
insert into wz_dewzqd (xh,mc,gg,dw,dezb,sybm,yf) values(hmwz.nextval,v_flows_user.mc,v_flows_user.gg,v_flows_user.dw,v_flows_user.dezb,abc,to_date(sj,'yyyy-mm'));
v_temp:='';
commit;
end loop;
if flows_user%isopen then
close flows_user;
end if;
end;
使用中發現如下問題:
1.在迴圈中由於執行速度過快,無法用時間戳或者查詢語句去生成主鍵,開始不停的報主鍵重複錯誤鬱悶。
2.引數名不能和表名的列名重複,容易造成無法讀取
新手關於cursor的理解
關於 cursor 在你理解和使用 android cursor 的時候你必須先知道關於 cursor 的幾件事情 cursor 是每行的集合。使用 movetofirst 定位第一行。你必須知道每一列的名稱。你必須知道每一列的資料型別。cursor 是乙個隨機的資料來源。所有的資料都是通過下標取得...
oracle 游標cursor詳解
一 概念 游標是sql的乙個記憶體工作區,由系統或使用者以變數的形式定義。游標的作用就是用於臨時儲存從資料庫中提取的資料塊。在某些情況下,需要把資料從存放在磁碟的表中調到計算機記憶體中進行處理,最後將處理結果顯示出來或最終寫回資料庫。這樣資料處理的速度才會提高,否則頻繁的磁碟資料交換會降低效率。二 ...
oracle儲存過程cursor
遍歷gws payment notice表,根據wfr no查詢gws write off record 根據gws write off record的source id查詢gws payment notice detail,如果不存在,則對gws payment notice detail作新增操...