關於巢狀表為record型別與bulk bind的結合使用
在PL/SQL中,BULK In-BIND與RECORD,%ROWTYPE是不能在一塊使用的,也就是說,BULK In-BIND只能與簡單型別的陣列一塊使用,這樣導致如果有多個欄位需要用BULK In-BIND來處理的話,程式碼就比較複雜:
declare
type tab_test is table of tmp_0925%rowtype;
v_id tab_test;
cursor cur_aids is select *
from tmp_0925
where rn >= v_begin and rn <= v_end;
begin
open cur_aids;
fetch cur_aids bulk collect into v_id;
v_cnt := v_id.count;
forall j in 1..v_cnt
update test
set (id, name, age) = (select v_id(j).id, v_id(j).name, v_id(j).age from dual)
where id = v_aids(j).id;
commit;
end;
LINE/COL ERROR
-------- -----------------------------------------------------------------
44/21 PLS-00382: expression is of wrong type
44/45 PLS-00436: implementation restriction: cannot reference fields
of BULK In-BIND table of records
如果想避免PLS-00436又想使用FORALL的話,程式碼如下:
declare
type tab_id is table of tmp_0925.id%type;
type tab_name is table of tmp_0925.name%type;
type tab_age is table of tmp_0925.age%type;
v_id tab_id;
v_name tab_name;
v_age tab_age;
cursor cur_aids is select *
from tmp_0925
where rn >= v_begin and rn <= v_end;
begin
open cur_aids;
fetch cur_aids bulk collect into v_id, v_name, v_age;
v_cnt := v_id.count;
forall j in 1..v_cnt
update test
set (id, name, age) = (select v_id(j), v_name(j), v_age(j) from dual)
where id = v_id(j);
commit;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11423276/viewspace-985474/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Referenc-巢狀表-巢狀表和陣列間的重要區別(正確地使用巢狀表)SQL巢狀陣列
- 關於MySQL遊標的巢狀使用MySql巢狀
- oracle 巢狀表 索引表 使用Oracle巢狀索引
- 關於 MySQL 的巢狀事務MySql巢狀
- Scala結構型別與複合型別解析型別
- oracle巢狀表Oracle巢狀
- Oracle 巢狀表Oracle巢狀
- while + else 使用,while死迴圈與while的巢狀,for迴圈基本使用,range關鍵字,for的迴圈補充(break、continue、else) ,for迴圈的巢狀,基本資料型別及內建方法While巢狀資料型別
- 關於結構體型別的學習結構體型別
- iterate的巢狀使用巢狀
- 巢狀表在表定義中的使用:一個例子巢狀
- Oracle 巢狀表(轉)Oracle巢狀
- 巢狀表的測試(一)巢狀
- 巢狀表的測試(二)巢狀
- 關於call, apply, bind方法的區別與內部實現APP
- 關於SSM與echart結合的問題總結SSM
- 關於 Go Modules 巢狀引入本地包的問題Go巢狀
- 封裝多型巢狀封裝多型巢狀
- element-ui的----el-form表單校驗巢狀表單校驗(表單多層巢狀)+el-table和el-form巢狀使用表單校驗UIORM巢狀
- 關於CAEmitterLayer和CAEmitterCell結合使用MIT
- vue的元件巢狀關係Vue元件巢狀
- 使用Forall 與bulk collect的快速複製表資料
- 關於Unity 如何與Blazor Server結合UnityBlazorServer
- v$sql_bind_capture與timestamp型別的繫結變數的數值SQLAPT型別變數
- 關於迴圈巢狀nested loops的一點分析巢狀OOP
- rem與em的區別||結合使用rem與emREM
- 實戰 Java 16 值型別 Record - 2. Record 的基本用法Java型別
- [譯] Focal:型別安全、表達力強、可組合的狀態管理方案型別
- STL程式設計實踐五:巢狀式的型別宣告 (轉)程式設計巢狀型別
- 關於github的全方位使用和與個人小組專案結合Github
- oracle 雜湊查詢與巢狀查詢跟表的先後關係測試Oracle巢狀
- 關於Redis資料型別以及應用場景的分析與總結Redis資料型別
- Python中巢狀自定義型別的JSON序列化與反序列化Python巢狀型別JSON
- 繫結變數、BIND PEEKING、histogram(柱狀圖)的使用變數Histogram
- Repeater巢狀繫結Repeater巢狀
- 巢狀動畫如何使用巢狀動畫
- 巢狀使用 datalist (轉)巢狀
- UITableView與WKWebView的巢狀與適配UIWebView巢狀