mysql存储过程示例

mysql > delimiter //
mysql > create procedure hello()
-> begin
-> select ' It is not a HelloWorld ';
-> end
-> //
Query OK, 0 rows affected ( 0.01 sec) 其中“delimiter //”的意思是定义结束符号为“//”,以此来替换mysql中的“;”
在mysql中查询上面的过程hello():
mysql > call hello() //
+ -- ----------------------+
| It is not a HelloWorld |
+ -- ----------------------+
| It is not a HelloWorld |
+ -- ----------------------+
1 row in set ( 0.00 sec)
建立一个简单的测试用表:
mysql > DROP TABLE IF EXISTS `userinfo`.`mapping`;
-> CREATE TABLE `userinfo`.`mapping` (
-> `cFieldID` smallint( 5) unsigned NOT NULL,
-> `cFieldName` varchar( 30) NOT NULL,
-> PRIMARY KEY (`cFieldID`)
-> ) ENGINE =InnoDB DEFAULT CHARSET =utf8;
-> //
Query OK, 0 rows affected ( 0.14 sec)
向table mapping中插入一些初始化的数据:
mysql > load data infile ' d:\\userInfo\\field.txt ' into table mapping
-> fields terminated by ' , ' lines terminated by ' \r\n ' //
Query OK, 5 rows affected ( 0.02 sec)
Records: 5 Deleted: 0 Skipped: 0 Warnings: 0
mysql > select * from mapping //
+ -- --------+-------------+
| cFieldID | cFieldName |
+ -- --------+-------------+
| 1 | MarketValue |
| 2 | P /L |
| 3 | EName |
| 4 | Nominal |
| 5 | Chg |
+ -- --------+-------------+
5 rows in set ( 0.02 sec)
现在简历一个向mapping中插入一条记录并返回记录的总和
mysql > drop procedure if exists mappingProc;
-> create procedure mappingProc(out cnt int)
-> begin
-> declare maxid int;
-> select max(cFieldID) + 1 into maxid from mapping;
-> insert into mapping(cFieldID,cFieldName) values(maxid, ' hello ');
-> select count(cFieldID) into cnt from mapping;
-> end
-> //
查找mappingProc():
mysql > call mappingProc( @a) //
mysql > select @a //
+ -- ----+
| @a |
+ -- ----+
| 6 |
+ -- ----+
mysql > select * from mapping //
+ -- --------+-------------+
| cFieldID | cFieldName |
+ -- --------+-------------+
| 1 | MarketValue |
| 2 | P /L |
| 3 | EName |
| 4 | Nominal |
| 5 | Chg |
| 6 | hello |
+ -- --------+-------------+
下面是java代码用来调用MySQL的存储过程:
package kissJava.sql;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
public class SQLUtils {
String url = "jdbc:mysql://127.0.0.1:3306/userInfo";
String userName = "root";
String password = "zhui007";
public Connection getConnection() {
Connection con=null;
try{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
con = DriverManager.getConnection(url, this.userName, this.password);
}
catch(SQLException sw){
}

return con;
}

public void testProc(){
Connection conn = getConnection();
CallableStatement stmt = null;
try{
stmt = conn.prepareCall("{call mappingProc(?)}");
stmt.registerOutParameter(1, Types.INTEGER);
stmt.execute();
int i= stmt.getInt(1);
System.out.println("count = " + i);
}
catch(Exception e){
System.out.println("hahad = "+e.toString());
}
finally{
try {
stmt.close();
conn.close();
}
catch (Exception ex) {
System.out.println("ex : "+ ex.getMessage());
}

}

}

public static void main(String[] args) {
new SQLUtils().testProc();
}

}
在到MySQL中查询可看到插入一条新的记录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值