1

我有一个 3 列ID (int), Name (string), Status (string)和 1000 行的数据表 .. 和一个有 4 列的表seq(从 生成SEQR.NEXTVAL)、IDNameStatus

我想在一个查询中插入所有 1000 行。我的意思是使用循环避免 1000 次数据库命中以解决性能问题。

约束是:

  1. 我正在使用 Oracle 10g
  2. 存储过程,游标不允许
  3. 允许临时表创建,因为 DBA 来自客户端,所以我不能从我这边创建数据库表

有正确代码的任何建议吗?我正在使用 Oracle 客户端和DbCommand对象

4

3 回答 3

2

所以只需使用一条 SQL 语句,对吗?

insert into table_a (seq_col, id, name, status)
select seqr.nextval, id, name, status
from table_b;
于 2013-06-26T18:52:23.453 回答
0

如果我正确理解了您的问题,您可以在插入语句中使用 Select 语句:

Insert into table2
  Select SEQR.NEXTVAL, tab1.*
    from table1 as tab1
于 2013-06-26T18:53:45.723 回答
0

使用 Oracle 阵列 DML。您只需从代码中循环填充列数组,然后将所有内容作为单个 INSERT 语句发送。无论如何,恕我直言,使用绑定变量正确编写查询的 1000 INSERT 不会遇到性能问题。如果您不使用绑定变量并每次都提交,您将获得它们......

于 2014-10-31T08:11:35.213 回答