code128b条码生成程序

这是一个在PL/SQL中用Java编写的函数,用于生成Code128B条形码。函数首先获取输入字符串的ASCII值,然后进行特定的计算以生成校验和,并结合起始和结束字符返回完整的条形码字符串。

FUNCTION get_char(char_code IN PLS_INTEGER) RETURN VARCHAR2 IS
    LANGUAGE JAVA NAME 'xxfnd.XxfndBarcodeUtil.getChar(int) return String';

FUNCTION code128b(data_to_encode IN VARCHAR2) RETURN VARCHAR2 IS
    v_c128_start     VARCHAR2(3 );
    v_c128_end       VARCHAR2(3 );
    n_checksum       PLS_INTEGER := 104 ;
    n_data_length    PLS_INTEGER;
    n_curr_char_code PLS_INTEGER;
  BEGIN
    -- Save the length of the content to cache.
    n_data_length := length(data_to_encode);
    fnd_message.set_name( 'CUX', 'CUX_FND_BARCODE_001' );
    v_c128_start := fnd_message.get;
    fnd_message.set_name( 'CUX', 'CUX_FND_BARCODE_002' );
    v_c128_end := fnd_message.get;
    FOR i IN 1 .. n_data_length LOOP
      n_curr_char_code := ascii(substr(data_to_encode, i, 1));
      IF n_curr_char_code >= 32 THEN
        n_checksum := n_checksum +
                      (i * (ascii(substr(data_to_encode, i, 1)) - 32 ));
      ELSE
        n_checksum := n_checksum +
                      (i * (ascii(substr(data_to_encode, i, 1)) + 64 ));
      END IF ;
    END LOOP ;
    n_checksum := MOD(n_checksum, 103 );
 
    IF n_checksum < 95 THEN
      n_checksum := n_checksum + 32;
    ELSE
      n_checksum := n_checksum + 100;
    END IF ;
 
    RETURN v_c128_start || data_to_encode || get_char(n_checksum) || v_c128_end;
 
  END code128b;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值