【发布时间】:2021-05-11 04:27:09
【问题描述】:
这是序列表:
| app | app_dt | seq_id |
|---|---|---|
| ABC | 2021-05-11 | 2 |
这是我的存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `GEN_APPL_NO`(
in appType varchar(3),
out applNo varchar(20)
)
begin
declare prefix varchar(1) default 'E';
declare seqNo int;
declare seqLen int default 3;
declare formNo varchar(20);
select seq_id into @seqNo from seq_table
where app = @appType and app_dt = curdate();
if( @seqNo is null )
then
set @seqNo = 1;
insert into seq_table values ( @app , curdate(), @seqNo );
else
update seq_table set seq_id= @seqNo +1 where app= @app and app_dt= curdate();
end if;
select @prefix || @appType || date_format(curdate(),'%Y%m%d') || lpad(@seqNo,@seqLen,0) into applNo ;
end
预期结果是EABC20210511002,但在调用之后
CALL GEN_EFORM_NO('ABC',?)
它返回null 没有错误。
【问题讨论】:
-
seq_id = curdate() 在您的选择中。是这样吗?
-
你有一个错字:
@applType而不是@appType中的select -
@Nick 在将 applType 更改为 appType 后仍然无法正常工作
-
@praveen 应该是 app_dt = curdate(),它返回 null 并且第 n 个是更新/插入表 'seq'
标签: sql stored-procedures mariadb