在Oracle表中我有一个很长的原始列。插入与选择不起作用,因为长的原始列也是我的选择语句的一部分。基本上我试图插入历史记录行以更改几个参数。因此我想在Oracle中使用PL/SQL。我没有PL/SQL的经验,也没有Google搜索几天之后的任何经验。任何人都可以帮我解决我的问题PL/SQL示例?提前致谢 !!!在Oracle中插入具有长原始列的历史记录行的PL/SQL
3
A
回答
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:
- Copying data from LOB Column to Long Raw Column(将LONG RAW到LONG RAW工作过,只是用INSERT替换UPDATE)
- Get the LENGTH of a LONG RAW
无论如何,你已经注意到使用这种数据类型是一件痛苦的事情。如果无法转换为LOB,则必须使用解决方法。
相关问题
- 1. 插入新的历史记录行
- 2. 从Git历史记录中删除具有历史记录的特定文件
- 3. 将历史记录插入新表
- 4. 没有行号的Bash历史记录
- 5. PL SQL触发器在列更新时插入历史记录
- 6. 在Oracle表中插入具有不同语言值的记录
- 7. TFS签入历史记录
- 8. GWT历史记录:历史记号
- 9. Eclipse运行历史记录
- 10. 如何在列和表格中保持插入和更新的历史记录?
- 11. 如何在SQL Server中的历史记录表中存储历史记录
- 12. 插入历史表 - oracle SQL - PL/SQL
- 13. VSO git文件历史中的“简单历史记录(默认)”和“完整历史记录”有什么区别?
- 14. 记住输入历史记录
- 15. 带历史记录的EditText
- 16. Nhibernate的历史记录
- 17. 如何查看插入表的历史记录?
- 18. 包含/插入子模块的Git历史记录提交
- 19. 插入游戏历史记录页面中的所有游戏者标签。
- 20. 为什么会将iframe的历史记录添加到历史记录中
- 21. LDAP登录历史记录
- 22. 在Oracle中查看触发器历史记录
- 23. 具有历史记录的浏览器后退按钮API
- 24. 未捕获SecurityError:无法执行'历史记录'上的'replaceState':具有URL的历史状态对象
- 25. 插入语句中的记录数(Oracle)
- 26. 从SSH命令行历史记录删除特定历史
- 27. 加入状态历史记录
- 28. 在oracle中插入多条记录
- 29. 在EF代码中记录用户更改的历史记录
- 30. 如何在MySQL中保留记录更新的历史记录?