【发布时间】:2012-01-22 17:04:37
【问题描述】:
我想问你如何提高这段代码中插入光标的性能? 我需要使用动态 plsql 来获取数据,但不知道如何以最佳方式改进 INSERT。可能像批量插入? 如果可能,请通过代码示例告诉我。
// 这就是我使用 cur_handle 的方式:
cur_HANDLE integer;
cur_HANDLE := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cur_HANDLE, W_STMT, DBMS_SQL.NATIVE);
DBMS_SQL.DESCRIBE_COLUMNS2(cur_HANDLE, W_NO_OF_COLS, W_DESC_TAB);
LOOP
-- Fetch a row
IF DBMS_SQL.FETCH_ROWS(cur_HANDLE) > 0 THEN
DBMS_SQL.column_value(cur_HANDLE, 9, cont_ID);
DBMS_SQL.COLUMN_VALUE(cur_HANDLE, 3, proj_NR);
ELSE
EXIT;
END IF;
Insert into w_Contracts values(counter, cont_ID, proj_NR);
counter := counter + 1;
END LOOP;
【问题讨论】:
-
为什么您认为必须为游标使用动态 SQL?如果您希望我们帮助您,您需要解释您的用例。
-
因为 select 语句是从网站组装而成的,例如,如果用户选择包含更详细的搜索,则 select 语句会更改,最终结果看起来会有所不同。整个应用程序是一个基于动态 plsql 代码构建的网站。