原始数组长度
Raw array length
我有如下一段代码:
set serveroutput on
declare
datos raw(100);
begin
dbms_output.put_line('The raw variable has a length of '||length(datos));
end;
/
为什么不起作用?它应该给我长度是 100.
以下
set serveroutput ON
DECLARE
datos RAW(100);
BEGIN
datos := utl_raw.Cast_to_raw('test');
dbms_output.Put_line('The raw variable has a lenght of '
||utl_raw.Length(datos));
END;
/
将 return
4
由于您没有给它赋值,所以长度仍然为空。声明一个变量,确定它的最大限制。但是,在您为其分配一个值之前,它占用的内存为零。
更新
计算变量的剩余space:
CREATE OR REPLACE FUNCTION fn_avl_spc(raw_val IN RAW)
IS
avl_spc NUMBER(100);
BEGIN
avl_spc := 100 - utl_raw.length(raw_val);
RETURN avl_spc;
END;
然后你可以重写你的行如下:
dbms_output.Put_line('The raw variable has a lenght of '
||fn_avl_spc(datos));
当然你可以改进函数使其更灵活return可用space任意长度的任意数据类型
我有如下一段代码:
set serveroutput on
declare
datos raw(100);
begin
dbms_output.put_line('The raw variable has a length of '||length(datos));
end;
/
为什么不起作用?它应该给我长度是 100.
以下
set serveroutput ON
DECLARE
datos RAW(100);
BEGIN
datos := utl_raw.Cast_to_raw('test');
dbms_output.Put_line('The raw variable has a lenght of '
||utl_raw.Length(datos));
END;
/
将 return
4
由于您没有给它赋值,所以长度仍然为空。声明一个变量,确定它的最大限制。但是,在您为其分配一个值之前,它占用的内存为零。
更新
计算变量的剩余space:
CREATE OR REPLACE FUNCTION fn_avl_spc(raw_val IN RAW)
IS
avl_spc NUMBER(100);
BEGIN
avl_spc := 100 - utl_raw.length(raw_val);
RETURN avl_spc;
END;
然后你可以重写你的行如下:
dbms_output.Put_line('The raw variable has a lenght of '
||fn_avl_spc(datos));
当然你可以改进函数使其更灵活return可用space任意长度的任意数据类型