2011-11-06 33 views
3

在Oracle表中我有一個很長的原始列。插入與選擇不起作用,因爲長的原始列也是我的選擇語句的一部分。基本上我試圖插入歷史記錄行以更改幾個參數。因此我想在Oracle中使用PL/SQL。我沒有PL/SQL的經驗,也沒有Google搜索幾天之後的任何經驗。任何人都可以幫我解決我的問題PL/SQL示例?提前致謝 !!!在Oracle中插入具有長原始列的歷史記錄行的PL/SQL

回答

3

LONG和LONG RAW數據類型已被棄用,並且已經存在很多年了。你離開他們真的好得多。儘管如此,如果您使用的是PL/SQL,那麼您將被限制爲32,760字節的數據,這是LONG RAW PL/SQL數據類型所能容納的最大值。但是,LONG RAW數據庫數據類型最多可以容納2GB的數據。因此,如果您的表中的任意行包含的數據長度超過32,760字節,您將會使用PL/SQL檢索它,而不是而不是。這是LONG和LONG RAW數據類型的一個基本限制,也是Oracle不贊成使用它的原因之一。

在這種情況下,唯一的選擇是Pro * C或OCI。

更多信息可以在這裏找到: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/datatypes.htm#CJAEGDEB

希望有所幫助。

2

您可以用LONG RAW列直接在PL/SQL的工作,如果你的數據被限制爲32KB:

FOR cc IN (SELECT col1, col2... col_raw FROM your_table) LOOP 
    INSERT INTO your_other_table (col1, col2... col_raw) 
     VALUES (cc.col1, cc.col2... cc.col_raw); 
END LOOP; 

如果任何LONG RAW超過32K這將失敗。

在這種情況下,您將不得不使用其他語言。你可以使用java,因爲它包含在數據庫中。我已經回答了幾個問題上所以用LONG RAW和java:

無論如何,你已經注意到使用這種數據類型是一件痛苦的事情。如果無法轉換爲LOB,則必須使用解決方法。

相關問題