sql语句:
创建存储函数用来返回购物车里所有物品的金额:
DROP FUNCTION IF EXISTS func_shop;
CREATE FUNCTION func_shop(id INT)
RETURNS DOUBLE(20,2)
BEGIN
DECLARE out_money DOUBLE(20,2);
SELECT SUM(sprice*snumber) INTO out_money FROM shopcart
WHERE sid = id;
RETURN out_money;
END;
在java中使用此函数:
//调用存储函数,得到购物车里金额的总和
public double getSumMoney(int id) {
Connection conn = null; // 数据库连接对象
CallableStatement clbStmt = null; // CallableStatement对象
double sum=0;
try {
// 获取数据库连接
conn = JdbcUtils.getConnection();
// 创建CallableStatement对象,调用存储函数
clbStmt = conn.prepareCall("{? = call func_shop(?)}");
clbStmt.setInt(2, id); // 获取顾客id
// 输出值:商品的总和
clbStmt.registerOutParameter(1, Types.DOUBLE);// 输出double类型
// 执行调用存储函数
clbStmt.execute();
//获取输出的返回值
sum = clbStmt.getDouble(1);
System.out.println(sum);
} catch (SQLException sqle) {
sqle.printStackTrace();
} finally {
// 关闭数据库操作对象
try {
JdbcUtils.closeDB(conn, clbStmt);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return sum;
}