임시 테이블을 사용하는 저장 프로 시저를 사용하여 특정 제품 범주 내의 모든 제품의 판매를 요약 할 수 있습니다. 코드를 실행하려고 시도했지만 실패했습니다. 나는 google과 여기 stackoverflow 검색하지만 내가 잘못한 것을 찾을 수 없습니다. Windows Server에서 MySQL 서버 5.5를 사용하고 있습니다.MySQL의 임시 테이블 정의
CREATE PROCEDURE `getStatistics`(IN `startDate` date,IN `endDate` date,IN `categoryName` varchar)
BEGIN
CREATE TEMPORARY TABLE procResult(productName VARCHAR, amount INT);
CREATE TEMPORARY TABLE tblProductID(SELECT ID, `name` FROM product WHERE categoryID = (SELECT ID FROM category WHERE `name` = categoryName));
DECLARE done_amt, done_PID INT DEFAULT FALSE;
DECLARE amount, productID INT DEFAULT 0;
DECLARE pidCursor CURSOR FOR SELECT ID, `name` FROM tblProductID;
DECLARE amtCursor CURSOR FOR SELECT orderlines.amount FROM orderlines WHERE orderlines.productID = productID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_amt = TRUE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_PID = TRUE;
OPEN pidCursor;
pid_loop:LOOP
DECLARE productName VARCHAR;
FETCH pidCursor INTO productID, productName;
IF done_PID THEN
LEAVE pid_LOOP;
END IF;
OPEN amtCursor;
amt_loop:LOOP
DECLARE tmpAmount INT DEFAULT 0;
FETCH amtCursor INTO tmpAmount;
IF done_amt THEN
LEAVE amt_loop;
END IF;
amount = amount + tmpAmount;
END LOOP;
CLOSE amtCursor;
IF amount > 0 THEN
INSERT INTO procResult VALUES (productName, amount);
amount = 0;
END IF;
END LOOP;
CLOSE pidCursor;
END;
당신이 어떤 오류를받을 수 있나요? 첫 번째 작업이 끝나기 전에이 절차를 두 번 실행하면 아마도 임시 테이블을 만들 수 없습니다.) – cichy
다음 오류가 발생합니다. 1064 - SQL 구문에 오류가 있습니다. 가까운 구문을 사용하려면 MySQL 서버 버전과 일치하는 매뉴얼을 확인하십시오 ') BEGIN CREATE TEMPORARY TABLE procResult (productName VARCHAR, amount INT); 'at line 1' – Feanaro
절차를 만들 때 실패했습니다. 하지만 네가 실제로 맞다. – Feanaro