Musisz samodzielnie sprawdzić poprawność przekazanych wartości parametrów. Jeśli używasz MySQL 5.5 lub nowszego, możesz skorzystać z SIGNAL
.
DELIMITER //
CREATE PROCEDURE my_procedure (IN param1 INT)
BEGIN
IF param1 IS NULL THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'NULL is not allowed.';
END IF;
-- do whatever
END//
DELIMITER ;
Oto SQLFiddle demo