FUNCTION `ufn_Get_DocNo_New`(in_TableID TINYINT, in_BookType TINYINT, in_DocDate DATE, in_VendorID SMALLINT) RETURNS VARCHAR(12) CHARSET utf8
BEGIN
DECLARE v_MonthLike VARCHAR(8);
DECLARE v_PreText VARCHAR(2);
DECLARE v_YYMM VARCHAR(6);
DECLARE v_DocNo VARCHAR(10);
SET v_MonthLike = CONCAT(SUBSTR(in_DocDate,1,7),'%');
SET v_YYMM = CONCAT('/',DATE_FORMAT(in_DocDate, '%y%m'),'/');
IF in_TableID = 22 THEN
IF in_BookType = 1 THEN
SET v_PreText = 'CS';
ELSEIF in_BookType = 2 THEN
SET v_PreText = 'BK';
ELSEIF in_BookType = 3 THEN
SET v_PreText = 'CT';
END IF;
SELECT IFNULL(MAX(SUBSTR(DocNo,9)),0) + 1
FROM `cashbanks`
WHERE `DocDate` LIKE v_MonthLike AND `VendorID` = in_VendorID
INTO v_DocNo;
END IF;
SET v_RetVal = CONCAT(v_PreText, v_YYMM, LPAD(v_DocNo, 4,'0'));
RETURN v_RetVal;
END
When I call this function in SQL window, it retuns correct value.
But if called in any stored procedure, it returns error 1292 stating YY-MM% is not valid.
I passed values to the function in required datatype and expected new docno as ‘CS/2304/0001’
in_TableID = 22, in_BookType = 1, in_DocDate = ‘2023-04-01’, in_VendorID = 1.
New contributor
Sushil Pugalia is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.