MySql 存储过程

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     }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。