CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PROCEDURE `student`.`select_view_score`(IN WhereCondition VARCHAR(500),IN OrderByExpress VARCHAR(100)) /*LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'*/ BEGIN DECLARE stmt VARCHAR(2000); IF LENGTH(OrderbyExpress)>0 THEN BEGIN SET @sqlstr=CONCAT('select * from view_score where ',WhereCondition,' order by ',OrderByExpress); END; ELSE BEGIN SET @sqlstr=CONCAT('select * from view_score where ',WhereCondition); END; END IF; PREPARE stmt FROM @sqlstr; EXECUTE stmt; END
调用
CALL select_view_score('成绩>2 and 姓名="李兴乐"',' ');