在mysql-front和MySQL Query Browser里试着建立一个最简单的存储过程, 如下: CREATE PROCEDURE proc()
BEGIN
SELECT * FROM func
END出错, 晕倒了. 
第一次用mysql, 用mysql.exe怎么执行命令? 回车没有任何提示!
这两天问的问题太多, 就这10分了, 郁闷...

解决方案 »

  1.   

    刚才那个问题解决了, 是版本问题.
    还有下面的这个带参数的不对吗? 为什么一直说出错.DROP PROCEDURE proc1;
    CREATE PROCEDURE proc1(p INT)
    BEGIN
    SELECT * FROM aaa;
    END
      

  2.   

    如果选中:
    DROP PROCEDURE proc1;或选中:
    CREATE PROCEDURE proc1(p INT)
    BEGIN
    SELECT * FROM aaa;
    END都可以执行, 而整个连不起来? 怎么能连起来执行?
      

  3.   

    每句结束后加 go就可以连起来执行。
    如:
    命令1 go
    命令2 go
    ……
    命令n
      

  4.   

    晕倒. go 不行啊. 说语法错误, go连语法颜色都没有, mysql就不支持吧?
      

  5.   

    如果选中:
    DROP PROCEDURE proc1;或选中:
    CREATE PROCEDURE proc1(p INT)
    BEGIN
    SELECT * FROM aaa;
    END都可以执行, 而如果不选中执行整个, 则语法错误. 怎么能连起来执行?
      

  6.   

    把一些论坛的备份(一个SQL文件), 没有发现建过程的句子, 不过发现移除表的句子与建表的句子中间没有空行. 例如:DROP TABLE IF EXISTS aaa;    
    /* 这里没有空行 */
    CREATE TABLE aaa ....他们可以连起来执行. 而我写的建过程的句子, 中间没空行也不能连起来执行. 例如:如果选中:
    DROP PROCEDURE proc1;或选中:
    CREATE PROCEDURE proc1(p INT)
    BEGIN
    SELECT * FROM aaa;
    END都可以执行.  但如果不选中执行整个, 则说语法错误. 怎么能连起来执行?
      

  7.   

    MySQL Query Browser建立存储过程:DELIMITER $$DROP PROCEDURE IF EXISTS `DATABASE_NAME`.`PROCEDURE_NAME` $$
    CREATE PROCEDURE DATABASE_NAME.PROCEDURE_NAME()
    BEGIN
    ... // 存储过程代码
    END $$DELIMITER ;
      

  8.   

    明白了. End 后面带上 ; 就可以了. 这才是关键!