【发布时间】:2012-10-25 14:11:41
【问题描述】:
可以在 oracle 中创建超过 2000 列的表。列名应该是任何东西,类型也应该是任何东西。我不知道该怎么写
【问题讨论】:
标签: oracle
可以在 oracle 中创建超过 2000 列的表。列名应该是任何东西,类型也应该是任何东西。我不知道该怎么写
【问题讨论】:
标签: oracle
不,这是不可能的。 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;
这样做是一个非常糟糕的主意,但它肯定是可能的。
【讨论】: