【问题标题】:Create table with 2000 column in oracle [closed]在 oracle 中创建具有 2000 列的表 [关闭]
【发布时间】:2012-10-25 14:11:41
【问题描述】:

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

【问题讨论】:

    标签: oracle


    【解决方案1】:

    不,这是不可能的。 Oracle 有一个limit of 1000 columns per table

    但是,为什么您首先要创建一个包含 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;
    

    这样做是一个非常糟糕的主意,但它肯定是可能的。

    【讨论】:

    • @DeepakKumar 你没看到吗?你甚至不能写代码。正如贾斯汀所说,你的设计有问题。
    • @DeepakKumar 不向您展示如何做您不能做的事情,为什么不要求对您的设计进行审核?
    • +1 漂亮的表名:)
    • +1 表示表名。 (另外,答案是正确的,显然)
    • @DeepakKumar - 我用在循环中添加列的示例更新了我的答案。这是一种非常糟糕的生成对象的方法——它违反了规范化的基本原则——而且没有什么意义。如果您能解释您正在尝试解决的业务问题,这将非常有帮助,以便我们可能提出更合适的解决方案。
    猜你喜欢
    • 2020-03-27
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多