關於oracle的cursor的使用

2021-08-30 18:49:04 字數 1000 閱讀 9427

今天專案突然要用到游標,好久沒有使用了有些生疏,在使用中發現以前沒注意的一些問題,先貼上**

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作新增操...