2011-11-06 79 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,则必须使用解决方法。