• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

简略使用MySQL的存储过程

mysql 搞代码 7年前 (2018-06-06) 131次浏览 已收录 0个评论

简单使用mysql的存储过程

MySQL5.0版本引进了存储过程的概念。存储过程可以提高执行效率,更容易维护。

在没有存储过程(procedure)概念之前,通常的业务逻辑sql代码有时很长,它们一般被嵌入在宿主语言(比如java)中,非常不便于维护,而有了存储过程,它们被定义在数据库端,并且进行了预编译。而且业务逻辑SQL代码无需在网络中传输,减轻了网络负担。可以说存储过程的优点大于它的缺点。

下面实现一个简单的加法存储过程。

mysql> delimiter $ mysql> create procedure pr_add (a int , b int)     -> begin     -> declare c int;     -> if a is null then     -> set a = 0;     -> end if;     -> if b is null then     -> set b = 0;     -> end if;     -> set c = a + b;     -> select c as sum;     -> end;     -> $

欢迎大家阅读《简略使用MySQL的存储过程》,跪求各位点评,by 搞代码

在命令行模式中运行存储过程:

mysql> delimiter ; mysql> set @a = 10; Query OK, 0 rows affected (0.00 sec)  mysql> set @b = 20; Query OK, 0 rows affected (0.00 sec)  mysql> call pr_add(@a,@b); +------+ | sum  | +------+ |   30 | +------+ 1 row in set (0.00 sec)  Query OK, 0 rows affected (0.00 sec)

在客户端执行存储过程:

public class ProcedureTest {    private static final String DB_URL = "jdbc:mysql://localhost:3306/zjut";  private static final String DRIVER = "com.mysql.jdbc.Driver";    private static final String USER = "root";  private static final String PASSWORD = "XXXXX";    private static String sql = "call pr_add(?,?)";    public static void main(String[] args) {      try {    Class.forName(DRIVER);    Connection conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);    CallableStatement cstmt = conn.prepareCall(sql);    cstmt.setInt(1,10);    cstmt.setInt(2, 20);    ResultSet rs = cstmt.executeQuery();    while(rs.next()) {     System.out.println(rs.getInt("sum"));    }   } catch (ClassNotFoundException e) {    e.printStackTrace();   } catch (SQLException e) {    e.printStackTrace();   }  }  }

关键代码是:

   CallableStatement cstmt = conn.prepareCall("call pr_add(?,?)");    cstmt.setInt(1,10);    cstmt.setInt(2, 20);    ResultSet rs = cstmt.executeQuery();

输出:

30

原理:首先创建SQL字符串,即 "call pr_add(?,?)" ,调用存储过程用call命令,call命令后跟存储过程名字,两个问号是占位符。

使用Connection对象创建CallableStatement对象,即 conn.prepareCall(sql); 该方法接受一个字符串,代表一个sql语句。

再用CallableStatement对象的executeQuery()执行SQL语句,返回一个ResultSet对象。

利用ResultSet对象遍历得到的数据。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:简略使用MySQL的存储过程

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址