微信群中有朋友问了个问题,Oracle一张普通堆表,最大支持多少个字段?
在Oracle 11g的官方文档中,指出一张表最大支持的列个数是1000个,
我们可以通过创建一张超过1000个列的测试表来验证这个问题。
测试1
1. 我们创建一张表,包含1个字段。
2. 通过PL/SQL块,循环999次,每次都使用alter table add column增加一个列。
3. 通过user_tab_columns视图确认,当前表含有1000个列。
4. 执行alter table add column,尝试增加第1001个列,此时提示了ORA-01792错误,指出表或视图中允许的列最大个数是1000,得到验证,
SQL> create table a (id number);
Table created.SQL> begin2 for i in 1..999 loop3 execute immediate 'alter table a add a'||i||' number(1)';4 end loop;5 end;6 /
PL/SQL procedure successfully completed.SQL> select count(*)from user_tab_columns where table_name='A';COUNT(*)
----------1000SQL> alter table a add c number(1);
alter table a add c number(1)*
ERROR at line 1:
ORA-01792: maximum number of columns in a table or view is 1000
测试2
定义一个PL/SQL块,通过字符串拼接,得到一个包含1001个列的create table语句,执行会提示报错,指出表或视图中允许的列最大个数是1000,
SQL> declare2 query varchar2(20000) := 'create table t01(';3 begin4 for i in 1..1001 loop5 query := query||'col'||i||' int,';6 end loop;7 query := query||'colx int)';8 execute immediate query;9 end;10 /
declare
*
ERROR at line 1:
ORA-01792: maximum number of columns in a table or view is 1000
ORA-06512: at line 8
由此引申出来,如果Oracle不同版本,对表列数有不同的个数要求,都可以用上述操作进行验证,因此,重要的是实践,不仅是记住结论,正所谓授人以鱼,不如授人以渔,就是这意思了。
又到了杂货铺读者的福利时间,2019年数据嘉年华技术大会将在下周召开,主办方为bisal个人杂货铺的读者们提供了一些价值99元的免费门票,持票可享受如下,
1. 两日大会议程(不含餐)
2. 会后 PPT 资料下载
3. 技术嘉年华会议资料
这次我们再赠送10张免费门票,形式是在这篇文章的文末留言,写上你打算通过这次会了解学习什么内容,按照留言的时间排序,前10位自动获得免费门票,祝各位好运了。