반응형
함수의 커서 - MariaDB
영화 제목을 받고 이 영화에 출연한 배우들의 출연료를 돌려주는 기능을 커서로 작성해야 하는 과제가 있습니다.
저는 다음과 같은 글을 썼습니다.
DELIMITER $$
CREATE FUNCTION getPay(movieTitle varchar(90))
RETURNS int;
BEGIN
DECLARE P int;
DECLARE done int DEFAULT FALSE;
DECLARE payCursor CURSOR FOR
(SELECT A.pay FROM actors A JOIN movie M ON M.id=A.movie WHERE M.title=movieTitle);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN payCursor;
loop_read : LOOP
FETCH payCursor INTO P;
IF done THEN
LEAVE loop_read;
END IF;
RETURN P;
END LOOP;
CLOSE payCursor;
END $$
DELIMITER ;
작동하지 않는 것은 비밀이 아닙니다.저는 세트를 반품하는 방법을 모릅니다, 게다가 제가 읽었기 때문에 MariaDB에서는 불가능합니다.임시 테이블을 만들려고 했지만 여러 번 이 기능을 사용하고 싶다면 좋은 해결책이 아닙니다.또한 모든 배우들에게 돈을 지불하는 절차를 작성해야 하는 다른 작업에 이 기능을 사용하고 싶습니다.커서에 대한 개념을 잘 모르겠어요.
이 함수는 쿼리에서 하나의 행을 가져오는 것 같습니다.이렇게 하면 다음 기능이 대체됩니다.
SELECT A.pay
FROM actors A
JOIN movie M ON M.id=A.movie
WHERE M.title=movieTitle)
LIMIT 1;
또는 함수이므로 커서를 제거하고 함수에 그것만 있으면 됩니다.
언급URL : https://stackoverflow.com/questions/64863993/a-cursor-in-a-function-mariadb
반응형
'source' 카테고리의 다른 글
.Net Core 2.0 Windows 서비스 (0) | 2023.08.24 |
---|---|
프런트 엔드 도커 파일로 해결하지 못했습니다. (0) | 2023.08.19 |
노드를 호스트하는 방법.공유 호스팅의 JS 응용 프로그램 (0) | 2023.08.19 |
div 내부의 모든 폼 요소 사용 안 함 (0) | 2023.08.19 |
기존 스레드 풀 C 구현 (0) | 2023.08.19 |