다음은 저장 프로 시저입니다. 그것은 잘 작동하지만 내 문제는 VARCHAR
출력 매개 변수를 가져올 수 없습니다.Mysql 저장 프로 시저가 VARCHAR 출력 매개 변수를 반환하지 않습니다.
나는 문제가있어 부분은 out 매개 변수 여기 op_resultMessage
BEGIN
SET op_resultMessage = @curcName;
END;
저장 프로 시저의에 @curcName
의 과제이다.
CREATE DEFINER=`root`@`localhost` PROCEDURE `addCurriculum`(
IN p_curcName varchar(100),
IN p_description TEXT,
IN p_yearLevel VARCHAR(50),
IN p_syStart INT,
IN p_syEnd INT,
IN p_creator VARCHAR(50),
OUT op_resultMessage VARCHAR(50))
BEGIN
DECLARE curcName VARCHAR(20) ;
IF EXISTS
(SELECT @curcName := `name`
FROM curriculum
WHERE
yearLevel = p_yearLevel
AND syStart = p_syStart
AND syEnd = p_syEnd)
THEN --
BEGIN
SET op_resultMessage = @curcName;
END;
ELSE
BEGIN
INSERT INTO curriculum(`name`, description, yearLevel, syStart, syEnd, creator)
VALUES(p_curcName,p_description,p_yearLevel,p_syStart,p_syEnd,p_creator);
END;
END IF;
END
나는 그래서
SET op_resultMessage = @curcName 'already uses the school year and year level you're trying to insert';
같은 것을 가야한다 name
이
을 존재하는 경우 메시지를 반환하기 위해 노력하고있어하지만 난 제대로 연결할 및 값을 지정하는 방법을 모르겠어요. 나는 여전히 := SET
및 =
운영자와 혼동 스럽습니다. 나는 그것이 내가 문제를 겪고있는 곳이라고 생각한다. 내가
OUT op_resultMessage VARCHAR(50)
같은 INT
에 out 매개 변수의 유형을 변경하는 경우
는 그것은 숫자 1로 출력 매개 변수 값을 반환 SET op_resultMessage = 1;
같은 op_resultMessage
에 번호를 할당합니다. varchar에서는 작동하지 않습니다.
그래서 나는 내가 어떤 도움을 주셔서 감사합니다 것
CALL `enrollmentdb`.`addCurriculum`
('Test Curriculum ','Test ','Grade 1',2015,2016,'jordan',@outputMsg);
SELECT @outputMsg; -- this doesn't return any value even if Grade 1, 2015 and 2016 exists
절차를 호출 할 때. 나는 실제로 mysql을 최근에 배웠다.
감사합니다.
도움 주셔서 감사합니다. 내가 당신의 대답을 보았을 때 curcName이 null인지 단순히 확인할 수있는 불필요한 if-else 블록을 사용한다는 것을 깨달았습니다. 감사합니다. 감사. – p3ace
내 기쁨. 나는 당신이 그것으로 1 행 최대 측면을 해결하기를 바랍니다. – Drew