mysqlストレージ関数の使用例の詳細
1143 ワード
sql文:
Javaでこの関数を使用します.
:
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;
}