在Navicat for MySQL裡用儲存過程和儲存函式實現兩數相加
阿新 • • 發佈:2021-02-17
技術標籤:jdbcjavawebmysqljdbcjavasql資料庫
在Navicat for MySQL裡用儲存過程和儲存函式實現兩數相加
- 在工具欄開啟查詢=>新建查詢=>編寫sql語句:
儲存過程
- sql語句如下:其中school為資料庫名
use school;
delimiter $
CREATE PROCEDURE addTwoNum ( in num1 int, in num2 int, out result int)
BEGIN
set result = num1+num2;
END;
$
delimiter;
- Java程式碼如下(呼叫)
public class JDBCPCallableStatement {
private static final String URL = "jdbc:mysql://localhost:3306/Scholl?characterEncoding=UTF-8";
private static final String USERNAME = "root" ;
private static final String PWD = "123456" ;
public static void invokeProdure(){
Connection connection = null;
CallableStatement cstmt = null;
try{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(URL,USERNAME,PWD);
cstmt = connection.prepareCall("{call addTwoNum(?,?,?)}");
cstmt.setInt(1, 20);
cstmt.setInt(2, 20);
cstmt. registerOutParameter(3, Types.INTEGER);
cstmt.execute();
int result = cstmt.getInt(3);
System.out.println(result);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
finally{
try{
if(cstmt != null) cstmt.close();
if(connection != null) connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
invokeProdure();
}
}
- 結果如下:
儲存函式
- sql語句如下:其中school為資料庫名
use scholl;
delimiter $
CREATE FUNCTION addTwoNumfunction (num1 int,num2 int) RETURNS int
BEGIN
DECLARE result int;
set result = num1+num2;
return result;
END;
$
delimiter;
- Java程式碼如下(呼叫)
public class JDBCPCallableStatement {
private static final String URL = "jdbc:mysql://localhost:3306/Scholl?characterEncoding=UTF-8";
private static final String USERNAME = "root" ;
private static final String PWD = "123456" ;
public static void invokeFunction(){
Connection connection = null;
CallableStatement cstmt = null;
try{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(URL,USERNAME,PWD);
cstmt = connection.prepareCall("{? = call addTwoNumfunction(?,?)}");
cstmt.setInt(2, 30);
cstmt.setInt(3, 40);
cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.execute();
int result = cstmt.getInt(1);
System.out.println(result);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
finally{
try{
if(cstmt != null) cstmt.close();
if(connection != null) connection.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
invokeFunction();
}
}
- 結果如下: