正常情况下:
enfwm VARCHAR(200), //(为该存储过程中要输入的参数)
DECLARE vfwm VARCHAR(20);//(要得到的结果)
SET vfwm = code(enfwm);//执行这步的时候,通过调用,可以得到一个vfwm的结果值。后来,因为工程的需要,我做了一下修改
IF (length(enfwm) = 16) THEN
SET enfwm = substring(enfwm, 4);
SET vfwm = code(enfwm);
就是在执行调用之前做一个判断,如果参数为16位就取这个参数的后面13之后,再进行调用。
但是问题就出在这个地方了,我在前面加了一个条件之后,SET vfwm = code(enfwm);得不到任何值,调试显示显示的是空的在正常情况下,要么显示NULL,要么显示一个正常的值。
enfwm VARCHAR(200), //(为该存储过程中要输入的参数)
DECLARE vfwm VARCHAR(20);//(要得到的结果)
SET vfwm = code(enfwm);//执行这步的时候,通过调用,可以得到一个vfwm的结果值。后来,因为工程的需要,我做了一下修改
IF (length(enfwm) = 16) THEN
SET enfwm = substring(enfwm, 4);
SET vfwm = code(enfwm);
就是在执行调用之前做一个判断,如果参数为16位就取这个参数的后面13之后,再进行调用。
但是问题就出在这个地方了,我在前面加了一个条件之后,SET vfwm = code(enfwm);得不到任何值,调试显示显示的是空的在正常情况下,要么显示NULL,要么显示一个正常的值。
+---------------------------------+
| substring('0001234567890123',4) |
+---------------------------------+
| 1234567890123 |
+---------------------------------+
1 row in set (0.00 sec)code是什么函数
SET enfwm = substring(enfwm, 4);
SET vfwm = code(enfwm);
END IF;
SET enfwm = substring(enfwm, 4);
END IF;
SET vfwm = code(enfwm);
把 SET vfwm = code(enfwm);写到里面测试过了不行。调用这个code()这个函数的时候得到的还是一个空的值
IF (length(enfwm) = 16) THEN
SET enfwm = substring(enfwm, 4);
END IF;
SET vfwm = code(enfwm);这样写还是得不到结果
SET enfwm = substring(enfwm, 13,1000);