初学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存储脚本
我用的系统是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存储脚本
至于上面那个存储速度我知道原因了,昨天google学习到了,原来我的mysql的默认引擎是innodb,而且innodb默认情况下是
autocommit = 1的,所以每存储一条就commit一次,导致存储十分慢。
后来我关掉commit后,连续存储1W条数据只要1.2s
用MyISAM的话稍微满意点,大概1.9s的样子。
楼上,你的方法我试了 还是一样的错误,第三行就是我的insert语句那一行,那一行根本一点问题都没有,因为我单独在终端里运行是可以通过的
create procedure simp ()
bgein
insert into table1 (id,ip,port) values (12,'192.168.1.1',1234);
end
//执行这个报错是吗?注意begin不是bgein
我在.sql里加上delimiter就可以在mysql中调用脚本成功创建多个procedure了 还是谢谢大家了
我验证了一下 确实是这么一回事。
假设我首先在mysql里改变了分割符,那么在脚本里不用加delimiter也可以了