简单使用MySQL的存储过程_MySQL

php中文网
发布: 2016-06-01 13:35:45
原创
1241人浏览过

bitsCN.com

简单使用mysql的存储过程

 

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

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

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

[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;  

    -> $  

 

在命令行模式中运行存储过程:  www.bitsCN.com  

[sql] 

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)  

 

在客户端执行存储过程:

[java

public class ProcedureTest {  

  

  

    private static final String DB_URL = "jdbc:mysql://localhost:3306/zjut";  

UQ云商B2B2C系统
UQ云商B2B2C系统

UQCMS云商是一款B2B2C电子商务软件 ,非常适合初创的创业者,个人及中小型企业。程序采用PHP+MYSQL,模板采用smarty模板,二次开发,简单方便,无需学习其他框架就可以自行模板设计。永久免费使用,操作简单,安全稳定。支持PC+WAP+微信三种浏览方式,支持微信公众号。

UQ云商B2B2C系统 1
查看详情 UQ云商B2B2C系统

    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();  

        }  

    }  

  

}  

 

关键代码是:

[java] 

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对象遍历得到的数据。

 

bitsCN.com
相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号