我有一个包含一列数字的简单表格。我想加载大约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是唯一的方法吗?我可以只用SQL做LOAD
吗?
答案 0 :(得分:2)
据推测,您的初始值为n
。如果是,则此代码会将code
填充为值n
到n+2999
:
insert into t_table (code)
select (&N + level ) - 1
from dual
connect by level <=3000
此查询使用SQL * Plus替换变量发布n
的初始值。其他客户需要以不同的方式传递价值。
“假设我使用stl :: vector在c ++中,我应该查询什么 写?“
所以当你写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类型,这是一个不同的问题(也是我无法回答的问题)。