MySQL存储过程学习及Java调用存储过程


存储过程虽然经常听到,但是我遇到的项目还没有使用过,比较郁闷,只能选择自己入门了,也顺便与大家分享,希望大家也能如愿,呵呵。

首先我用的环境是window xp+mysql5,这个大家应该都有的,没有的安装一下吧。好装好了,不要忘记将mysql.exe的路径目录放入环境变量path中,这样在cmd里输入以下命令就可以进入mysql的命令行模式:mysql -u root -p  -> mysql密码即可。

  1. mysql> delimiter //  
  2. mysql> create procedure hello()  
  3.     -> begin  
  4.     -> select 'It is not a HelloWorld';  
  5.     -> end  
  6.     -> //  
  7. Query OK, 0 rows affected (0.01 sec)  
delimiter // 是将结束符由默认的;换成了//,如果不这样select......语句就会导致上面的代码出错,不信你可以试一下哈,呵呵。接着在mysql中查询上面的过程hello():
  1. mysql> call hello()//  
  2. +------------------------+   
  3. | It is not a HelloWorld |  
  4. +------------------------+   
  5. | It is not a HelloWorld |  
  6. +------------------------+   
  7. 1 row in set (0.00 sec)  
我们再来一个好点的入门小实例吧
  1. mysql> DROP TABLE IF EXISTS `userinfo`.`mapping`;  
  2.     -> CREATE TABLE  `userinfo`.`mapping` (  
  3.     ->   `cFieldID` smallint(5) unsigned NOT NULL,  
  4.     ->   `cFieldName` varchar(30) NOT NULL,  
  5.     ->   PRIMARY KEY  (`cFieldID`)  
  6.     -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
  7.     -> //  
  8. Query OK, 0 rows affected (0.14 sec)  
想表中load值进空表  文件为:

filed.txt

  1. 1,MarketValue  
  2. 2,P/L  
  3. 3,EName  
  4. 4,Nominal  
  5. 5,Chg  

 

  1. mysql> load data infile 'd:\\field.txt' into table mapping  
  2.     -> fields terminated by ',' lines terminated by '\r\n' //  
  3. Query OK, 5 rows affected (0.02 sec)  
  4. Records: 5  Deleted: 0  Skipped: 0  Warnings: 0  
  5. mysql> select *from mapping//  
  6. +----------+-------------+   
  7. | cFieldID | cFieldName  |  
  8. +----------+-------------+   
  9. |        1 | MarketValue |  
  10. |        2 | P/L         |  
  11. |        3 | EName       |  
  12. |        4 | Nominal     |  
  13. |        5 | Chg         |  
  14. +----------+-------------+   
  15. rows in set (0.02 sec)  
现在简历一个向mapping中插入一条记录并返回记录的总和
  1. mysql> drop procedure if exists mappingProc;  
  2.     ->  create procedure mappingProc(out cnt int)  
  3.     ->  begin  
  4.     ->  declare maxid int;  
  5.     ->  select max(cFieldID)+1 into maxid from mapping;  
  6.     ->  insert into mapping(cFieldID,cFieldName) values(maxid,'hello');  
  7.     ->  select count(cFieldID) into cnt from mapping;  
  8.     ->  end  
  9.     ->  //  
查找mappingProc():
  1. mysql> call mappingProc(@a)//  
  2. mysql> select @a//  
  3. +------+   
  4. | @a   |  
  5. +------+   
  6. | 6    |  
  7. +------+   
  8. mysql> select * from mapping//  
  9. +----------+-------------+   
  10. | cFieldID | cFieldName  |  
  11. +----------+-------------+   
  12. |        1 | MarketValue |  
  13. |        2 | P/L                 |  
  14. |        3 | EName          |  
  15. |        4 | Nominal     |  
  16. |        5 | Chg         |  
  17. |        6 | hello       |  
  18. +----------+-------------+  
  • 1
  • 2
  • 下一页

相关内容