USE `DMS_db`;
DELIMITER $$
CREATE PROCEDURE usp_BrowseFiles
(
p_CmpId int
)
BEGIN
DROP TEMPORARY TABLE IF EXISTS temp;
CREATE TEMPORARY TABLE temp (ID VARCHAR(50),NodeName LONGTEXT,NodeParentId VARCHAR(50),NodeType VARCHAR(50),ValuePath LONGTEXT);
INSERT INTO temp (ID,NodeName,NodeParentId,NodeType,ValuePath) (SELECT CONCAT('CMP',CompanyId),Name,NULL,'CMP',NULL FROM Company WHERE CompanyId=IFNULL(p_CmpId,CompanyId));
DECLARE v_ID VARCHAR(50);
DECLARE v_Name LONGTEXT;
DECLARE v_PID VARCHAR(50);
DECLARE v_Path LONGTEXT;
DECLARE ProjectCur CURSOR FOR
SELECT ProjectId,Name,CompanyId FROM Project
WHERE CompanyId IN ( SELECT CompanyId FROM Company WHERE CompanyId=IFNULL(p_CmpId,CompanyId));
OPEN ProjectCur;
FETCH ProjectCur INTO v_ID,v_Name,v_PID;
LOOP
INSERT INTO temp VALUES (CONCAT('PRJ',v_ID),v_Name,CONCAT('CMP',v_PID),'PRJ',CONCAT('/CMP',v_PID))
INSERT INTO temp SELECT CONCAT('CAT',DATE_FORMAT(FileCategoryId)),Name,CONCAT('PRJ',v_ID),'CAT',CONCAT('/CMP',v_PID,'/PRJ',v_ID) FROM FileCategory
FETCH ProjectCur INTO v_ID,v_Name,v_PID
END LOOP;
CLOSE ProjectCur;
DECLARE v_CatgId bigint;
DECLARE v_FileCompanyId int;
DECLARE FileCur CURSOR FOR
SELECT FileId,Name,ProjectId,FileCategoryId,CompanyId FROM File
WHERE CompanyId=IFNULL(p_CmpId,CompanyId);
OPEN FileCur
FETCH FileCur INTO v_ID,v_Name,v_PID,v_CatgId,v_FileCompanyId;
LOOP
INSERT INTO temp VALUES (CONCAT('FILE',v_ID),v_Name,CONCAT('CAT',v_PID),'FILE',CONCAT('/CMP',DATE_FORMAT(v_FileCompanyId),'/PRJ',v_PID,'/CAT',DATE_FORMAT(v_CatgId)));
FETCH FileCur INTO v_ID,v_Name,v_PID,v_CatgId,v_FileCompanyId;
END LOOP;
CLOSE FileCur;
SELECT * FROM temp;
END;
Error Details:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE v_ID VARCHAR(50); DECLARE v_Name LONGTEXT; DECLARE v_PID VARCHAR(50); ' at line 10
Please help