大家都经常用 Mysql-Front 连接数据库吧,
我最近刚开始写 存储过程,遇到一些问题,发现Mysql-Front 和 远程登录再用mysql命令行连接数据库有不同,
从文档上copy的示例也不能正常执行,比较郁闷,
经过试验,基本上差别如下:
在Mysql命令行登录模式,要如下写mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
这是因为:用mysql客户端delimiter命令来把语句定界符从 ;变为//。这就允许用在 程
序体中的;定界符被传递到服务器而不是被mysql自己来解释。
所以在写完结构体之后,还要把定界符给恢复回来:mysql> delimiter ;

解决方案 »

  1.   

    从SQL语句上没什么不同。 delimiter // 是MYSQL.exe 的命令,并不是MYSQL数据库的命令 (这个有些绕口,但事实如此) mysql.exe 只不过是个MYSQL数据库的行命令工具。
      

  2.   

    而在 Mysql-Front 中,定界符是不用修改的,如下语句会报错:delimiter //
    Mysql-Front 中,结构体之内用“;”结构体之外也用“;”分隔,
    所以END后面也要加一“;”CREATE PROCEDURE simpleproc (OUT param1 INT)
    BEGIN
      SELECT COUNT(*) INTO param1 FROM t;
    END;
    Query OK, 0 rows affected (0.00 sec)
    目前就发现这些,不知道还有没有其他区别,
    有了解的比较详细的吗,能不能给解释一下?
      

  3.   

    delimiter // 是MYSQL.exe 本身的命令,不是MYSQL数据库的命令!
      

  4.   

    感觉有道理,不知道还有其他区别吗?
    另外,Mysql-Front 中全用“;”做分隔符,怎么就没事,为什么存储过程的定义不会被断开?
    看来Mysql-Front 比较智能?
      

  5.   

    mysql会认为;是一条可执行语句可以执行了