drop procedure if exists pr_add;
create procedure pr_add()
begin
select *from tbA
end
这样创建有错么?
有的认为应该是这样:
drop procedure if exists pr_add;
create procedure pr_add()
begin
select *from tbA;
end
这样的话刚输入到select *from tbA;按回车,命令就默认结束,就出错了
该怎么创建呢,是我装的MySQL不支持存储过程么?我装的是MySQL5.0的
望高手指点哈

解决方案 »

  1.   

    前面加上delimiter //
    最后加上  //
      

  2.   


    mysql> delimiter //
    mysql> drop procedure if exists pr_add//
    Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> create procedure pr_add()
        -> begin
        -> select * from test;
        -> end
        -> //
    Query OK, 0 rows affected (0.03 sec)mysql> call pr_add()//
    +------+------+------+---------------------+
    | id   | name | num  | rtime               |
    +------+------+------+---------------------+
    |    1 | nike |  600 | 2009-04-21 12:45:12 |
    |    2 | nike |  200 | 2009-06-04 20:03:42 |
    |    3 | nike |  200 | 2009-03-30 14:00:00 |
    |    3 | nike |  400 | 2009-03-20 14:00:00 |
    |    4 | nike |  100 | 2009-03-15 10:30:20 |
    |    5 | nike |  200 | 2009-03-12 12:23:30 |
    +------+------+------+---------------------+
    6 rows in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)
      

  3.   

    用SQLyog来创建很方便。DELIMITER $$;DROP PROCEDURE IF EXISTS `test`.`pr_add`$$CREATE PROCEDURE `test`.`pr_add` ()
    BEGIN
      select *from tbA;
    END$$DELIMITER ;$$
      

  4.   

    如一楼所说,加上 delimter // 通过MYSQL工具,语句提交符以 // 为准而不再是 ;
    否则mysql工具看到 ; 就会结束语句输入等待直接提交了。
      

  5.   

    mysql> delimiter //
    mysql> drop procedure if exists pr_add//
    Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> create procedure pr_add()
        -> begin
        -> select * from test;
        -> end
        -> //
    Query OK, 0 rows affected (0.03 sec)mysql> call pr_add()//
    为什么我开始这样运行不行,后来重新登录MySQL就可以了