CREATE FUNCTION `test_h`(`cyear` varchar(8),`cmouth` varchar(8))
RETURNS decimal(10,2)
BEGIN
declare c decimal(10,2);
select IFNULL(sum(payment), 0) as total1
from per_p
WHERE type='1' AND index_type='2'
AND date_format(time, '%Y-%m') = CONCAT(cyear, '-',cmouth) into c;
RETURN c;
END;
mysql函数改成
CREATE OR REPLACE FUNCTION "test_h"("cyear" IN VARCHAR(8),"cmouth" IN VARCHAR(8))
RETURN DECIMAL(10, 2)
AS
c DECIMAL(10, 2);
BEGIN
SELECT NVL(SUM(payment), 0) INTO c
FROM per_p
WHERE type = '1' AND index_type = '2'
AND TO_CHAR(time, 'YYYY-MM') = cyear || '-' || cmouth;
RETURN c;
END;
这样改还是报错
你这个是不是 select返回空结果集 才导致NOFOUND 异常
试试这个,你这个错应该是由于关键字没屏蔽导致的,屏蔽关键字你可以参考这个帖子
https://eco.dameng.com/community/question/a7e82dcd4b3857650f017fa1d0e79406
CREATE FUNCTION test_h(cyear varchar(8),cmouth varchar(8))
RETURN decimal(10,2) is
c decimal(10,2);
BEGIN
select IFNULL(sum(payment), 0) as total1 into c
from per_p
WHERE "type"='1' AND index_type='2'
AND date_format(time, '%Y-%m') = CONCAT(cyear, '-',cmouth);
RETURN c;
END;
CREATE OR REPLACE FUNCTION test_h(cyear IN VARCHAR2, cmouth IN VARCHAR2)
RETURN NUMBER
IS
c NUMBER(10,2);
BEGIN
SELECT NVL(SUM(payment),0) INTO c
FROM per_p
WHERE type='1' AND index_type='2'
AND TO_CHAR(time, 'YYYY-MM') = cyear || '-' || cmouth;
RETURN c;
END;
报什么错?