CREATE DEFINER = `root`@`localhost` PROCEDURE `NewProc`(IN `reada` int)
    NO SQL
BEGIN
#Routine body goes here...
SELECT COUNT(*) FROM testdb.testid WHERE testid.id = reada;
END;为什么这个定义是合法的,NO SQL不是已经限定了不能使用sql语句。还有就算我使用CONTAINS SQL也是能够顺利定义并调用的,根据官方文档,CONTAINS SQL表示表示方法不包含读或写数据的语句。方法内部不是有读语句?

解决方案 »

  1.   

    在MYSQL命令行下?
    delimiter $$
    CREATE DEFINER = `root`@`localhost` PROCEDURE `NewProc`(IN `reada` int)
         NO SQL
     BEGIN
     #Routine body goes here...
     SELECT COUNT(*) FROM testdb.testid WHERE testid.id = reada;
     END;$$
    delimiter ;
      

  2.   

    是可以的。刚刚google了,这些关键字只是建议或者提示性质,没有任何作用。mysql真蛋疼
      

  3.   

    NO SQL是不写sql语句才会报错吧
      

  4.   

    NO SQL indicates that the routine contains no SQL statements. 
    NO SQL 标明 过程中包括 非SQL语句, 并不是不包括SQL语句。