CREATE PROCEDURE `sp_DisplayAllAccounts`(accountType VARCHAR(10))
BEGIN
DECLARE thisSQL VARCHAR(300) DEFAULT '';
CASE accountType
WHEN 'Agent' THEN
SET thisSQL = CONCAT("SELECT CAST(AgentID AS CHAR) AS id, ",
"CAST(CONCAT(LastName, ', ', ' ',FirstName, ' ', AgentId) AS CHAR) AS agent ",
"FROM agent WHERE FirstName IS NOT NULL AND LastName <> 'Vendor' ",
"ORDER BY LastName, FirstName;");
WHEN 'Office' THEN
SET thisSQL = CONCAT("SELECT OfficeID AS id, CAST(CONCAT(OfcName, ' ID: ', MainOfcID) AS CHAR) ",
"AS office FROM office UNION ",
"SELECT OfficeID AS id, CAST(CONCAT(OfcName, ' ID: ', OfficeID) AS CHAR) ",
"AS office FROM office ",
"WHERE MainOfcID <> OfficeID ORDER BY office;");
ELSE
SET thisSQL = CONCAT("SELECT 'Account Type ", accountType, " is not available.");
END CASE;
SET @theSQL = thisSQL;
PREPARE runSQL FROM @theSQL;
EXECUTE runSQL;
DEALLOCATE PREPARE runSQL;
END