1. PREPARE statement_name FROM sql_text /*定义*/
  2. EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/
  3. DEALLOCATE PREPARE statement_name /*删除定义*/

    这是我项目当中用到的,用作参考使用:

    DELIMITER $$
    DROP PROCEDURE IF EXISTS `gpsdata`.`sp_test`$$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_test`(
    	gpstime_ varchar(128),
    	gpsname_ varchar(128),
    	gpsinfo_ varchar(256)
    )
    BEGIN
    DECLARE tbname varchar(50) DEFAULT  '0';
    DECLARE v_sql varchar(1024) DEFAULT '0';
    
    SET v_sql=CONCAT('select * from  ', tbname ,' where gpsname = ',gpsname_,'  order by gpstime desc limit 1');
    
    
    SET @lastdata = v_sql;
    PREPARE lastdata FROM @lastdata;   
    EXECUTE lastdata;
    DEALLOCATE PREPARE lastdata;  
    
    select v_sql;
    
    END$$
    
    DELIMITER ;