if is_yandm = '0' or is_yandm is null then
is_yandm :='001';
else
is_yandm := cast(10000+cast(is_yandm as int)+1 as varchar2(5));
end if;这个语句在存储过程中报错pls-00103SELECT cast(10000+cast('123' as int)+1 as varchar(5)) FROM DUAL 在pl/sql里面执行时没问题的 问题出在哪了呢
is_yandm :='001';
else
is_yandm := cast(10000+cast(is_yandm as int)+1 as varchar2(5));
end if;这个语句在存储过程中报错pls-00103SELECT cast(10000+cast('123' as int)+1 as varchar(5)) FROM DUAL 在pl/sql里面执行时没问题的 问题出在哪了呢
is_yandm :='001';
else
is_yandm := ‘1’;
end if;
这么写在存储过程里编译是通过的 所以问题就出在
cast(10000+cast(is_yandm as int)+1 as varchar2(5));
--这样取值
select cast(10000+cast(is_yandm as int)+1 as varchar2(5)) into yandm from dual;
if is_yandm = '0' or is_yandm is null then
is_yandm :='001';
else
is_yandm := yandm --赋值
end if;
is_yandm :='001';
else
is_yandm := cast(10000+cast(is_yandm as int)+1 as varchar2);
end if;另外,不需要这样cast来cast去的,oracle会自动转换的.
is_yandm := cast(10000+cast(is_yandm as int)+1 as varchar2(5));改成
SELECT cast(10000+cast(is_yandm as int)+1 as varchar2(5)) into is_yandm FROM DUAL;