【筆記】9i 文件中的一個問題
9i pl/sql reference上有一個例子,querying data into collections of records,但是卻有幾處錯誤。jackywood告訴說:index by 用法有誤,用了index by 後面的
num_tab NumTabTyp := NumTabTyp(2, 5, 8, 9);
char_tab CharTabTyp := CharTabTyp('Tim', 'Jon', 'Beth', 'Jenny');
初始化會報錯。修改後,仍然報錯,提示
UPDATE tab1 SET (col1, col2) = rec_tab(i) WHERE col1 < 8;
update ...set 表示式必須是子查詢,百思不得其解,按照oracle文件說法,這樣update應該是可以被接受的。。
一下是相關的程式碼:
DECLARE
/*
create TABLE tab1 (col1 NUMBER, col2 VARCHAR2(20));
CREATE TABLE tab2 (col1 NUMBER, col2 VARCHAR2(20));
*/
TYPE RecTabTyp IS TABLE OF tab1%ROWTYPE INDEX BY BINARY_INTEGER;
TYPE NumTabTyp IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
TYPE CharTabTyp IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER;
CURSOR c1 IS
SELECT col1, col2 FROM tab2;
rec_tab RecTabTyp;
num_tab NumTabTyp := NumTabTyp(2, 5, 8, 9);
char_tab CharTabTyp := CharTabTyp('Tim', 'Jon', 'Beth', 'Jenny');
BEGIN
FORALL i IN 1 .. 4
INSERT INTO tab1 VALUES (num_tab(i), char_tab(i));
SELECT col1, col2 BULK COLLECT INTO rec_tab FROM tab1 WHERE col1 < 9;
FORALL i IN rec_tab.FIRST .. rec_tab.LAST
INSERT INTO tab2 VALUES rec_tab (i);
FOR i IN rec_tab.FIRST .. rec_tab.LAST LOOP
rec_tab(i).col1 := rec_tab(i).col1 + 100;
END LOOP;
FORALL i IN rec_tab.FIRST .. rec_tab.LAST
UPDATE tab1 SET (col1, col2) = rec_tab(i) WHERE col1 < 8;
OPEN c1;
FETCH c1 BULK COLLECT
INTO rec_tab;
CLOSE c1;
END;
文件中定義的格式為:
SELECT select_items BULK COLLECT
INTO record_variable_name
FROM rest_of_select_stmt FETCH { cursor_name | cursor_variable_name | :host_cursor_variable_name} BULK COLLECT
INTO record_variable_name LIMIT numeric_expression;
FORALL index IN lower_bound .. upper_bound
INSERT INTO { table_reference | THE_subquery} {column_name, column_name .. .}
VALUES
(record_variable_name(index))
rest_of_insert_stmt
FORALL index IN lower_bound .. upper_bound
UPDATE {table_reference | THE_subquery} alias SET
(column_name, column_name.. .) = record_variable_name
(index) rest_of_update_stmt
RETURNING row_expression, row_expression .. .
BULK COLLECT INTO record_variable_name;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-582475/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- InnoDB文件筆記(一)筆記
- Vue文件Template Syntax時想到的一個到另一個的問題Vue
- Laravel event 事件使用中 記錄的一個小問題Laravel事件
- 記錄一個小問題
- 9i筆記-undo筆記
- Kafka文件閱讀筆記(一)Kafka筆記
- 學習本站Laravel教程中遇到的問題筆記Laravel筆記
- 修改一個列表中的一個單詞小技巧筆記筆記
- 【筆記】9i concepts 學習(一)筆記
- 記一個效能優化問題優化
- jsp中輸出word文件的問題JS
- 一個SMMU記憶體訪問異常的問題記憶體
- 日常遇到的一些問題或知識的筆記(一)筆記
- 問一個jbuilder中ejb debug問題UI
- SQLLDR的一個筆記SQL筆記
- 一個記憶體不能被written的問題記憶體
- 記錄一個mysql連線慢的問題MySql
- 字串移位包含的問題——解題筆記字串筆記
- 學習Oracle Objects的文件和問題記錄OracleObject
- 文件筆記--Datatypes筆記
- 記一個ios滾動穿透問題iOS穿透
- 9i筆記-後臺程式筆記
- Elasticsearch中關於transform的一個問題分析ElasticsearchORM
- 一個SQL效能問題的優化探索(二)(r11筆記第38天)SQL優化筆記
- 一個細小問題觸發的報警(r11筆記第68天)筆記
- 9i Performance Tuning Guide 讀書筆記一ORMGUIIDE筆記
- 記錄一個新專案遇到的 MySQL 問題MySql
- Go記憶體架構,一個有趣的問題Go記憶體架構
- 一個非技術問題的問題
- csss中box-sizing的問題 元素在另一個元素中框框包含的問題CSS
- asmcmd的一個問題ASM
- 一個jbuilder的問題UI
- Python讀書筆記:需要注意的70個小問題Python筆記
- oracle 9i for linux 9.2.0.4 中開啟autotrace中的一個bug。OracleLinux
- 日常遇到的一些問題或知識的筆記(二)筆記
- IFrame跨域問題筆記跨域筆記
- 一個ORA-00600問題的簡單分析(r12筆記第18天)筆記
- Unity IMGUI 文件筆記UnityGUI筆記