获取 LONG RAW 的长度
我有一个表,其中有一列数据类型为LONG RAW
。如何确定此列中数据的大小(以字节为单位)?
如果我对其调用LENGTH
函数,则会引发ORA-00932:不一致的数据类型:预期的NUMBER 得到LONG BINARY
。
以防万一您这么认为:UTL_RAW.LENGTH
引发 ORA-00997:非法使用 LONG 数据类型
:)
(是的,我知道 LONG RAW
已弃用 - 由于某些旧软件可能需要它而出现了这个问题)
I have a table with a column of data type LONG RAW
. How do I determine the size (in bytes) of the data in this column?
If I call the LENGTH
function on it, it raises ORA-00932: inconsistent datatypes: expected NUMBER got LONG BINARY
.
Just in case you think it: UTL_RAW.LENGTH
raises ORA-00997: illegal use of LONG datatype
:)
(Yes, I know LONG RAW
is deprecated - the question came up due to some old software that might require it)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为不可能在 PLSQL 中操作超过 32k 的 LONG RAW。这是一个返回 LONG RAW 长度的 java 过程。
首先,设置:
java 类(我的 java 有点生疏):
让我们这样称呼它:
我已经用大于 32k 的字段测试了该函数,它似乎可以工作。
I don't think it's possible to manipulate LONG RAWs longer than 32k in PLSQL. Here is a java procedure that returns the length of a LONG RAW.
First, the setup:
The java class (my java is a bit rusty):
Let's call it:
I've tested the function with larger than 32k fields and it seems to work.
只要列中的数据不超过 16,383 字节,您就可以使用 PL/SQL 函数来解决这个问题,例如
不幸的是,LONG RAW 最多可以容纳 2GB...
As long as the data in the column does not exceed 16,383 bytes, you can solve this with a PL/SQL function, e.g.
Unfortunately, a LONG RAW can hold up to 2GB...
如果您正在使用小型测试数据库,一个肮脏的技巧可能会有所帮助:使用
BLOB
而不是LONG RAW
复制表中的所有数据。One dirty trick, which might help if you're playing with a small test database: copy all data in a table with a
BLOB
instead of aLONG RAW
.