首页 > 解决方案 > 如何从 UTL_RAW.CAST_TO_VARCHAR2 函数输出固定长度值?

问题描述

我正在使用 UTL_RAW.CAST_TO_VARCHAR2 将我的日期转换为 ASCII 值,然后将此值写入文本文件。

fl_rcrd :=
        '03'
     || RPAD (' ', 23)
    || RPAD(UTL_RAW.CAST_TO_VARCHAR2 ('0' ||TO_CHAR (date_var, 'yyyymmdd') || 'C'),55)
     || code_var                
     || RPAD (' ', 79);
     
  UTL_FILE.PUTF (fl_handle, fl_rcrd || '\n');
  

这里 date_var 应该在第 26 位输出,带填充的总长度应该是 55,code_var 应该在第 81 位打印。但是 date_var 出现在第 84 位,这意味着这条线RPAD(UTL_RAW.CAST_TO_VARCHAR2 ('0' ||TO_CHAR (date_var, 'yyyymmdd') || 'C'),55) 的总长度是 58 而不是 55。

文件格式

在使用 UTL_RAW.CAST_TO_VARCHAR2 函数时不了解如何限制输出的长度?

标签: oracledatabase-administration

解决方案


推荐阅读