標籤:style blog http io ar color os sp java
1、沒有參數的預存程序
DELIMITER $$ --建立結束符 CREATE PROCEDURE proce1() BEGIN SELECT * FROM users; --SQL語句,一定要以;結束 END $$ DELIMITER ; --還原結束符 CALL proce1 --調用預存程序
2、只有輸入參數的預存程序
1 DELIMITER $$ 2 3 CREATE PROCEDURE proce2(IN _id VARCHAR(32),IN _name VARCHAR(50) ) --輸入參數要用IN開頭 名稱 類型 4 BEGIN 5 INSERT INTO users(id,username) VALUES (_id,_name); 6 END $$ 7 8 DELIMITER ; 9 10 CALL proce2(‘U002‘,‘Tom‘) --調用預存程序11 12 13 CALL proce1
3、只有輸出參數的
DELIMITER // CREATE PROCEDURE proce3(OUT _size INT) --輸出參數,以out開頭 BEGIN SELECT COUNT(1) INTO _size FROM users; --設定到_size中 也可以 SET _size=(SELECT COUNT(1) FROM users;); END // DELIMITER ; CALL proce3(@count); SELECT @count
在Java程式中調用預存程序
1、調用沒有的預存程序
1 public void test() throws Exception 2 { 3 Connection conn=DbUtils.getcConnection();//擷取conn 4 CallableStatement cs= conn.prepareCall("{call proce1()}");//調用預存程序 5 //如果最後一個sql語句為select語句,為true 否則為false 6 //【如果語句為設定值,還是false】SELECT COUNT(1) INTO _size FROM users; --設定到_size中 也可以 SET _size=(SELECT COUNT(1) FROM users;); 7 boolean b=cs.execute(); 8 if(b) 9 {10 ResultSet rs= cs.getResultSet();11 while(rs.next())12 {13 System.out.println("name:"+rs.getString(1));14 }15 }16 conn.close();17 }
2、調用有輸入參數的預存程序
1 public void Test2() throws Exception 2 { 3 Connection conn=DbUtils.getcConnection(); 4 CallableStatement cs= conn.prepareCall("{call proce2(?,?) }"); 5 cs.setString(1, "U003");//設定 IN 值 6 cs.setString(2, "Lucy"); 7 boolean b=cs.execute(); 8 System.out.println("boolean:"+b); 9 conn.close();10 }
3、調用有輸出參數的預存程序
1 public void Test3() throws Exception 2 { 3 Connection conn=DbUtils.getcConnection(); 4 CallableStatement cs= conn.prepareCall("{call proce3(?) }"); 5 cs.registerOutParameter(1, Types.INTEGER);//設定out類型值;Types轉換為資料庫類型 6 boolean b= cs.execute(); 7 int size=cs.getInt(1);//擷取值 8 System.err.println("size:"+size); 9 conn.close();10 }
MySql 預存程序