PL/SQL Check Digit,使用MOD 11进行luhn [英] PL/SQL Check Digit, luhn using MOD 11
本文介绍了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屋!
查看全文