안녕하세요~~
Mysql에서도 다이나믹 커서를 사용할 수있는지해서 질문해봅니다.
빨간 줄부터 컴파일이 안되고 구문 오류를 뱉어내는군요..
내부에서 페이징해서 커서를 이용해 결과를 리턴시키려고합니다.
PREPARE를 사용해서 바인딩할 방법이 있을까요?
DELIMITER $$
CREATE DEFINER=`SP_SCHEDULER`@`%` PROCEDURE `REQ_ITEMS_LIST`(
IN _ITME_CATEGORY_IDX INT,
IN _PAGESZIE INT,
IN _NCURRENTPAGE INT,
INOUT _ITEM_LISTARRY VARCHAR(2000))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE __ITEM_LISTARRY VARCHAR(2000) DEFAULT '' ;
DECLARE __ITEM_LISTSIZE INT DEFAULT 0 ;
DECLARE __TOTALROW INT DEFAULT 0;
DECLARE _LIMITMAX INT DEFAULT 0;
DECLARE _LIMITMIN INT DEFAULT 0;
DECLARE _CNT INT DEFAULT 0;
DECLARE _NPAGECNT INT DEFAULT 5;
DECLARE TMP_ii_Idx INT DEFAULT 0;
DECLARE TMP_ic_Idx INT DEFAULT 0;
DECLARE TMP_ii_Type INT DEFAULT 0;
DECLARE TMP_iI_Name VARCHAR(150) DEFAULT '';
DECLARE TMP_ii_Price VARCHAR(150) DEFAULT '';
DECLARE TMP_ii_Emoneymax VARCHAR(150) DEFAULT '';
DECLARE TMP_ii_Emoneymin VARCHAR(150) DEFAULT '';
DECLARE TMP_ii_Description VARCHAR(150) DEFAULT '';
DECLARE TMP_iI_OpenVMYN INT DEFAULT 0;
DECLARE TMP_iI_SaleYN INT DEFAULT 0;
DECLARE TMP_ii_Imgsrc VARCHAR(150) DEFAULT '';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
SET __ITEM_LISTARRY = '';
SELECT COUNT(ii_Idx) INTO _CNT FROM ITEM_INFO NOLOCK WHERE iI_SaleYN = 1 AND iI_OpenVMYN = 1 LIMIT 0, 1;
IF _CNT > 0 THEN
SET _NPAGECNT = (SELECT ((_NPAGECNT - 1) / _PAGESZIE + 1)) ;
SET _LIMITMIN = (SELECT ( _PAGESZIE * _NCURRENTPAGE)) ;
SET __TOTALROW = _CNT;
DECLARE cur CURSOR FOR SELECT ii_Idx, ii_Imgsrc FROM ITEM_INFO NOLOCK WHERE iI_SaleYN = 1 AND iI_OpenVMYN = 1 LIMIT 1, 1;
OPEN cur;
CLOSE cur;
END IF;
END$$
DELIMITER ; |