初学Mysql,问题比较低级还请高手指点。问题是这样的:
我用的系统是RHEL6.3,今天才学习到Mysql的存储过程,看了教程之后在Mysql的终端里创建procedure没有问题。无非就是
delimiter //
create procedure simp ()
bgein
insert into table1 (id,ip,port) values (12,'192.168.1.1',1234);
end
//
然后就创建成功了,运行也没有问题。
但是因为这样创建存储过程太麻烦,我就想写一个脚本来创建很多存储过程,就像之前建立一个create.sql的脚本,然后可以用SQL语句创建数据表,很方便。但是同样的代码放在脚本里创建存储过程时,Mysql就报错了,各种语法错误。。
我不是很理解,还是说要在脚本中创建存储过程需要特别的声明什么的么,第一次发帖,很多不懂,还望高手解答。
另外,就是上面那段简单的存储过程,是用Qt调用的,调用100次花了3秒,也就是33ms一次。如果不用存储过程更慢,可怕的要运行19s。我想知道Mysql存储速度这么慢么?还是我自己的操作问题?
MySQL存储脚本

解决方案 »

  1.   

    额,脚本我写出来了啊,我就是吧在mysql终端下的那段create procedure写到了一个叫procedure.sql的文件里,然后在mysql终端里运行source procedure.sql就报错了。
    至于上面那个存储速度我知道原因了,昨天google学习到了,原来我的mysql的默认引擎是innodb,而且innodb默认情况下是
    autocommit = 1的,所以每存储一条就commit一次,导致存储十分慢。
    后来我关掉commit后,连续存储1W条数据只要1.2s
    用MyISAM的话稍微满意点,大概1.9s的样子。
      

  2.   

    mysql -uroot -pxx  yourdbname < xxxx.sql
      

  3.   

    ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
    楼上,你的方法我试了 还是一样的错误,第三行就是我的insert语句那一行,那一行根本一点问题都没有,因为我单独在终端里运行是可以通过的
      

  4.   

    或者谁能贴一个用.sql脚本创建存储过程的列子给我看看么 谢谢了
      

  5.   

    delimiter //
    create procedure simp ()
    bgein
    insert into table1 (id,ip,port) values (12,'192.168.1.1',1234);
    end
    //执行这个报错是吗?注意begin不是bgein
      

  6.   

    我解决了原来即使在.sql的脚本里写存储过程的时候也是要改变分割符号的,这一点和建表的脚本有区别。
    我在.sql里加上delimiter就可以在mysql中调用脚本成功创建多个procedure了 还是谢谢大家了
      

  7.   

    原因我想大概是在构建存储过程的时候,如果不指定分割符号,终端默认的是;,那么在调用.sql脚本顺序执行命令的时候,end前面就会有一个分割符,表示我的创建命令已经完成了,而这显然是不对的。所以一定要改变mysql终端下的分割服,不能是;
    我验证了一下 确实是这么一回事。
    假设我首先在mysql里改变了分割符,那么在脚本里不用加delimiter也可以了