

CREATE PROCEDURE `TestDynamicSQL` (_FromID INT, _ToID INT)
BEGIN
DECLARE _statement VARCHAR(500);
SET _statement = 'SELECT * FROM testDynamic ';
IF (_FromID IS NOT NULL) OR (_ToID IS NOT NULL) THEN
SET _statement = CONCAT(_statement, 'WHERE ');
IF (_FromID IS NOT NULL) THEN
SET _statement = CONCAT(_statement, '(SystemID >= ', _FromID, ') ');
END IF;
IF (_ToID IS NOT NULL) THEN
IF (_FromID IS NOT NULL) THEN
SET _statement = CONCAT(_statement, 'AND ');
END IF;
SET _statement = CONCAT(_statement, '(SystemID <= ', _ToID, ') ');
END IF;
END IF;
/* un-comment the line below if you want to also view the
SQL statement that was just constructed */
#SELECT _statement;
SET @statement = _statement;
PREPARE dynquery FROM @statement;
EXECUTE dynquery;
DEALLOCATE PREPARE dynquery;
END

Users browsing this forum: No registered users and 1 guest