2012-07-25 23 views
3

我使用oracle 10 g。我如何創建一個有2列長的表格?

我有一張桌子,需要2列Long類型。

CREATE TABLE emp 
(   
    id1 LONG NULL, 
    id2 LONG NULL, 
    // 
    // other columns. 
); 

當我執行此查詢時,它給我這個錯誤。

Error report: 
SQL Error: ORA-01754: a table may contain only one column of type LONG 
01754. 00000 - "a table may contain only one column of type LONG" 
*Cause: An attempt was made to add a LONG column to a table which already 
      had a LONG column. Note that even if the LONG column currently 
      in the table has already been marked unused, another LONG column 
      may not be added until the unused columns are dropped. 
*Action: Remove the LONG column currently in the table by using the ALTER 
      TABLE command. 

我在谷歌搜索,但找不到合適的解決方案。 爲什麼他們不允許LONG的2列?

正在使用number而不是列是一個好主意?

我怎麼能做到這一點?

在此先感謝。

+1

如果您已經在修改Quartz表,您可能還想將VARCHAR更改爲VARCHAR2。他們的表格腳本有幾個問題。 – 2012-07-25 18:11:37

回答

9

LONG色譜柱長時間不推薦使用;自8i以來,我相信。從the 11g documentation

請勿使用LONG列創建表。改爲使用LOB列(CLOB,NCLOB, BLOB)。 LONG列僅支持向後兼容 。

您曾經在表中只允許有一個LONG列。我不完全確定,但我認爲這是因爲LONG數據與其他列一起存儲,並且不止一個數據會使其更加難以管理。 LOB的存儲方式不同;請參閱表here進行比較。


Oracle的LONG數據類型爲「的可變長度可達2千兆字節字符數據」。如果您要存儲數字數據,請使用NUMBER

如果您映射Java數據類型(從您的配置文件猜測!),this table可能是有用的。

+0

這其中哪一種最適合長時間使用?我如何從這個數據類型中獲得長整型值? – vikiiii 2012-07-25 09:05:44

+2

@vikiiii - 也許這是一個完整的數據類型不匹配;你是否試圖找到一個類似'C''long'的數據類型,這是數字?我從看起來像ID的列名猜測。 Oracle的'LONG'是完全不同的...... – 2012-07-25 09:11:17

+0

是的。我的列是數字。使用'數字'而不是列是一個好主意?或者我可以使用的任何其他數據類型 – vikiiii 2012-07-25 09:12:00

相關問題