今天有同事问到,oracle的一个表里,最多可有多少个字段?
之前我从来没相关这个问题,指在乎一个表的容量和磁盘空间的问题。
为此在网上特意查了下,却得到不同的答案:1. 8i和9i都是1000个,包括隐藏字段(类属性),以前是254个。
2. 没什么限制
由于这些答案我并不满意,则在自己的oracle 10g中做了个试验:
p_temp 存储过程 循环往temp_rect表里添加字段
----------------------------------------------------------------------------------------------------------------
create or replace procedure p_temp AS
v_exe_sql varchar2(2000);
vnumber number;
gnum number;
begin
begin
gnum :=0;
vnumber :=1;
for vnumber in 1..1002 loop
gnum := gnum+1;
begin
v_exe_sql:='alter table temp_rect add column'||gnum||' number(1)';
execute immediate v_exe_sql;
end;
end loop;
end;
end p_temp;
----------------------------------------------------------------------------------------------------------------
运行p_temp
SQL> exec p_temp;
begin p_temp; end;
ORA-01792: 表或视图中的最大列数为 1000
ORA-06512: 在 "AAA.p_temp", line 13
ORA-06512: 在 line 2
SQL> select count(*) from all_tab_columns where owner='AAA' and table_name='temp_rect';
COUNT(*)
----------
1000
----------------------------------------------------------------------------------------------------------------
由此可确定oracle10g的 一个表里可添加的最大字段数为1000.