10 진수 값을 반환하는 함수를 만들려고합니다. MySQL을 처음 사용했습니다. 나는 MSSQL에 경험이있다. 다음은 코드입니다. 여기 MySQL CASE 표현식 오류
delimiter $$
CREATE FUNCTION FN_SUELDO_BASICO(pLEGAJO_ID INT)
RETURNS decimal(12,2)
BEGIN
DECLARE vTOTAL DECIMAL(12,2);
SELECT
CASE WHEN PERSONAS.SUELDO_BASICO = 0
THEN CATEGORIAS.SUELDO_BASICO
ELSE PERSONAS.SUELDO_BASICO
END
INTO vTOTAL
FROM CATEGORIAS
JOIN PERSONAS__r__CATEGORIAS PrC
ON CATEGORIAS.ID = PrC.CATEGORIA_ID
JOIN PERSONAS
ON PERSONAS.ID = pLEGAJO_ID;
RETURN vTOTAL;
END$$
테이블의 결과 집합
CREATE TABLE `PERSONAS` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NOMBRE` varchar(100) COLLATE latin1_general_ci NOT NULL,
`APELLIDO` varchar(100) COLLATE latin1_general_ci NOT NULL,
`DNI` varchar(10) COLLATE latin1_general_ci NOT NULL,
`CUIL` varchar(45) COLLATE latin1_general_ci DEFAULT NULL,
`DIRECCION` varchar(45) COLLATE latin1_general_ci DEFAULT NULL,
`LOCALIDAD_ID` int(11) DEFAULT NULL,
`PARTIDO_ID` int(11) DEFAULT NULL,
`PROVINCIA_ID` int(11) DEFAULT NULL,
`TELEFONO1` varchar(20) COLLATE latin1_general_ci DEFAULT NULL,
`TELEFONO2` varchar(20) COLLATE latin1_general_ci DEFAULT NULL,
`EMAIL` varchar(20) COLLATE latin1_general_ci DEFAULT NULL,
`SUELDO_BASICO` decimal(12,2) DEFAULT NULL,
`FECHA_INGRESO` date NOT NULL,
`SINDICATO` bit(1) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `DNI` (`DNI`),
KEY `NOM_AP` (`NOMBRE`,`APELLIDO`),
KEY `CUIL` (`CUIL`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci$$
SELECT * FROM PERSONAS WHERE ID = 1;
'1', 'Leandro', 'Nuñez', '28.111.519', '20-28111519-0',
'11 de Septiembre 111 Dto B', '1', '1', '1', '4225-1111', '15-1111-1834',
'[email protected]', '4500.00', '2010-04-19', '0'
문제는 Vtotal이 항상 NULL 값을 반환하고 당신이 볼 수있는 방법, Vtotal이의 결과가 4500.00해야한다는 것입니다 페르소나, 그래서 오류가 있다고 가정 CASE 식으로 의견이나 제안에 감사드립니다.
어떻게 함수를 호출합니까? 해당 코드를 게시하십시오. – Bohemian
SELECT FN_SUELDO_BASICO (1); – leandronn