原始数组长度

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任意长度的任意数据类型