【发布时间】:2013-08-05 08:23:21
【问题描述】:
我是 teradata 的新手。我想将数字 1 到 1000 插入到表 test_seq 中,该表创建如下。
create table test_seq(
seq_id integer
);
在这个网站上搜索后,我想出了 recusive 查询来插入数字。
insert into test_seq(seq_id)
with recursive cte(id) as (
select 1 from test_dual
union all
select id + 1 from cte
where id + 1 <= 1000
)
select id from cte;
test_dual 创建如下,它只包含一个值。 (类似于 Oracle 中的 DUAL)
create table test_dual(
test_dummy varchar(1)
);
insert into test_dual values ('X');
但是,当我运行插入语句时,我得到了错误,Failure 2616 Numeric overflow occurred during computation.
我在这里做错了什么? integer 数据类型不足以容纳数值 1000 吗?
另外,有没有办法编写查询,以便我可以取消 test_dual 表?
【问题讨论】:
标签: sql teradata recursive-cte