PL/SQL Check Digit,使用MOD 11进行luhn [英] PL/SQL Check Digit, luhn using MOD 11

查看:152
本文介绍了PL/SQL Check Digit,使用MOD 11进行luhn的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以这是一个问题: 编写代码以获取ID并确定校验位是否正确

So here is the question: Write code to take in an id and determine if the check digit is correct

更新的代码:

    Set SERVEROUTPUT ON
 DECLARE
      val_num NUMBER := '&user_input';
      holder NUMBER := 0;
      y NUMBER := 0;
      conv_string VARCHAR2(20);
   BEGIN
     conv_string := to_char(val_num*10);
     for x in 1..length(conv_string) loop
       y := to_number(substr(conv_string, -x, 1));
       if mod(x,2) = 0 then
         y := y * 2;
        if y > 9 then
         y := y - 9;
        end if;
       end if;
      holder := holder + y;
    end loop;
    dbms_output.put_line ('Check is '||(11-Mod(holder, 11)));
 END luhn;
   /
 SET SERVEROUTPUT ON

返回值为:

SQL> @ loop
Enter value for user_input: 036532
old   2:       val_num NUMBER := '&user_input';
new   2:       val_num NUMBER := '036532';
Check is 2

应为6

推荐答案

在实际执行之前

SET SERVEROUTPUT ON

使SQL * Plus能够获取数据库输出缓冲区.

to enable SQL*Plus to fetch database output buffer.

这是解决方案: https://community.oracle.com/线程/837639?start = 0& tstart = 0

这篇关于PL/SQL Check Digit,使用MOD 11进行luhn的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆