source

함수의 커서 - MariaDB

manycodes 2023. 8. 19. 10:31
반응형

함수의 커서 - 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

반응형