Java MySQL 存储过程 入门

存储过程(SQL):

create procedure testproc1(in para1 int, in para2 int, out para3 varchar(50), inout para4 decimal(38,12))

label : begin

declare var1, var2 int default 10;
declare var3 varchar(50) default 'LiYuming';
declare var4 decimal(38,12) default 0.0001;
declare var5 double default 10.0;
declare var6 float;

select c5 into var6 from cursor_test3 where c1 = 7174543 and c2 = 0.6143697306;
set var2 = var2 + 1;

case para1
when 1 then insert into test1 values (var1, var3, var4, var5, var6);
else insert into test1 values (var2, var3, var4, var5, var6);
end case;

while para2 > 20 do
insert into test1 values (para2, var3, var4, var5, var6);
set para2 = para2 - 1;
end while;

select * from test1;

set para3 = var3;
set para4 = para4 - var4;

end label


控制台操作:




数据库初始状态:




Java程序(完整):

package framework;

import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

public class ProcTest {


public static void main(String[] args) throws SQLException {

Connection conn = DBConnection.getMySQLConnection("127.0.0.1", "3306", "root", "root");

CallableStatement cstmt = conn.prepareCall("{call testproc1(?, ?, ?, ?)}");
cstmt.setInt(1, 0);
cstmt.setInt(2, 25);
cstmt.registerOutParameter(3, Types.VARCHAR);
cstmt.setBigDecimal(4, new BigDecimal("10.0001"));
cstmt.registerOutParameter(4, Types.DECIMAL);

ResultSet rs = cstmt.executeQuery();

String out1 = cstmt.getString(3);
BigDecimal out2 = cstmt.getBigDecimal(4);

System.out.println(out1);
System.out.println(out2);

while(rs.next()){
System.out.println(rs.getInt(1));
}

rs.close();
cstmt.close();
conn.close();
}
}

package framework;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnection {
//get a connection of MySQL
public static Connection getMySQLConnection(String ip, String port, String userName, String passwd) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://" + ip + ":" + port + "/cursor";
try {
Class.forName(driver);
return DriverManager.getConnection(url, userName, passwd);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}


运行结果(控制台):



运行后数据库状态:



【6层】一字型框架办公楼(含建筑结构图、计算书) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值