1. 程式人生 > 其它 >在Navicat for MySQL裡用儲存過程和儲存函式實現兩數相加

在Navicat for MySQL裡用儲存過程和儲存函式實現兩數相加

技術標籤: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();
	}
	
}
  • 結果如下:
    在這裡插入圖片描述