2012-11-05 95 views

回答

15

不,這是不可能的。 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; 

這將是一個非常糟糕的主意,做這樣的事情,但它是當然可能。

+0

atleast給我一個1000列的例子only.is有任何方式來運行循環,並創建列 –

+3

@DeepakKumar你不明白嗎?你甚至不能寫代碼。正如賈斯汀所說,你的設計有些不妥。 –

+4

@DeepakKumar而不是告訴你如何去做你不能做的事情,爲什麼你不要求對你的設計進行評論? – swasheck