-- drop proc sp_maxseq
create proc sp_maxseq
@table_nm varchar(15),
@column_nm varchar(30)
as
begin
declare @check_cnt int,
@today_ymd char(9),
@today_hms varchar(6),
@return_seq varchar(15)
-- 오늘날짜 구하기
select @today_ymd = convert(char(8),getdate(),112)
-- 현재시간 구하기
select @today_hms = replace(convert(varchar,getdate(),8),':',null)
select @today_ymd = rtrim(@today_ymd)+ '%'
if 'tb_campcust' = @table_nm
select @check_cnt = count(*)
from tb_campcust
where substring(@column_nm,1,8) like @today_ymd
else if 'tb_campcust_tmp' = @table_nm
select @check_cnt = count(*)
from tb_campcust_tmp
where substring(@column_nm,1,8) like @today_ymd
else if 'tb_agscript' = @table_nm
select @check_cnt = count(*)
from tb_agscript
where substring(@column_nm,1,8) like @today_ymd
else
goto err_rtn
if @check_cnt < 1
select @return_seq = @today_ymd + '0000001'
else
select @return_seq = @today_ymd + right('000000'+ltrim(str(isnull(convert(int,max(substring(@column_nm,9,7))),0)+1)),7)
end
select @return_seq as return_seq
return
err_rtn:
select 'X' as return_seq
return
테이블 네임 비교쪽에 있는 where 절을 없애면 카운트가 되는데 like 문만 있으면 안됩니다.. 여기저기 찾아보다가 너무 급해서 질문 올립니다.
@check_cnt 에 계속 0 만 나옵니다. 뭐가 잘못된걸까요..ㅠㅠ.