在oracle中使用2000列创建表

Dee*_*mar -5 oracle

是否可以在oracle中创建超过2000列的表.列名应该是任何东西,类型也应该是任何东西.我不知道如何写

Jus*_*ave 15

不,这是不可能的.Oracle 每个表限制为1000列.

但是,为什么要首先创建一个包含2000列的表?这将强烈暗示您的架构严重需要一些规范化.如果您能解释您尝试解决的业务问题,我们几乎可以肯定地建议一个更合适的解决方案.

如果您确实违反了正确的规范化并且想要在循环中生成列,那么您可以执行类似的操作

DECLARE
  l_sql_stmt varchar2(1000);
BEGIN
  l_sql_stmt := 'CREATE TABLE violation_of_normalization( col1 number )';
  EXECUTE IMMEDIATE l_sql_stmt;

  FOR i IN 2 .. 900
  LOOP
    l_sql_stmt := 'ALTER TABLE violation_of_normalization ADD( col' || i || ' number )';
    EXECUTE IMMEDIATE l_sql_stmt;
  END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

做这样的事情会是一个非常糟糕的主意,但这肯定是可能的.

  • +1漂亮的表名:) (6认同)
  • 表名为+1.(另外,答案是正确的,obviosuly) (5认同)
  • @DeepakKumar而不是告诉你如何做你不能做的事情,你为什么不要求对你的设计进行评论? (4认同)
  • @DeepakKumar你不明白吗?你甚至无法编写代码.Justin说,你的设计有些不对劲. (3认同)