【发布时间】:2020-08-13 14:50:54
【问题描述】:
我有一个 PL/SQL 过程,它使用 For 循环 并插入大约 5000 条记录。
我正在尝试使用 FORALL,因为我遇到了 For 循环 的性能问题。
我正在传递表名、序列 ID、列名列表(I_columnnames 作为逗号分隔的字符串)、列数据类型(作为逗号分隔的字符串)、多记录级别数据(作为逗号分隔的字符串)
I_columnnames 将有多个列名(每次执行的列数不同) 我已根据一个集合 v_tab 中的相应数据类型格式化每个记录级别数据(例如。'REC01',1500,100,100,TO_TIMESTAMP('2019-10-10','YYYY- MM-DD HH:MM:SS.FF3'))
现在,我必须在这个动态表中插入记录级数据,为此我使用 FORALL 语句并立即执行如下:
FORALL i IN v_tab.first .. v_tab.last
EXECUTE IMMEDIATE 'INSERT INTO ' ||I_tablename||' (BLCK_ID, SEQ_ID, '||I_columnnames|| ')
values ('''|| I_blckid||''' ,'||I_sequence||' ,'||':1'||')' using v_tab(i);
但我收到 ORA - no enough values 错误,因为绑定变量:1 已被视为单个字符串(尽管它有多个逗号分隔值)
请帮忙。
【问题讨论】: