0

我有一个简单的表格,其中有一列数字。我想在其中加载大约 3000 个数字。我想在内存中执行此操作,而不使用 SQL*Loader。我试过

INSERT ALL
   INTO t_table (code) VALUES (n1)
   INTO t_table (code) VALUES (n2)
   ...
   ...
   INTO t_table (code) VALUES (n3000)
SELECT * FROM dual

但我在 1000 个值时失败了。我该怎么办 ?SQL*Loader 是唯一的方法吗?我可以LOAD只使用 SQL 吗?

4

1 回答 1

2

大概你有一个初始值n。如果是这样,此代码将填充以下code值:nn+2999

insert into t_table (code)
select (&N + level ) - 1
from dual
connect by level <=3000 

此查询使用 SQL*Plus 替换变量来发布 的初始值n。其他客户端将需要以不同的方式传递值。


“假设我在 c++ 中使用 stl::vector,我应该写什么查询?”

所以当你写n3000你真正的意思是n(3000)。在 SQL 中使用数组很容易。此示例使用 Oracle 的预定义集合之一,一个 NUMBER 类型的表:

declare 
    ids system.number_tbl_type; 
begin
    insert into t_table (code)
    select column_value
    from table ( select ids from dual )
    ; 
end;

至于将 C++ 向量映射到 Oracle 类型,这是一个不同的问题(我无法回答)。

于 2012-08-09T08:18:51.313 回答