程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 簡單使用MySQL的存儲過程

簡單使用MySQL的存儲過程

編輯:MySQL綜合教程

簡單使用MySQL的存儲過程   MySQL5.0版本引進了存儲過程的概念。存儲過程可以提高執行效率,更容易維護。 在沒有存儲過程(procedure)概念之前,通常的業務邏輯sql代碼有時很長,它們一般被嵌入在宿主語言(比如Java)中,非常不便於維護,而有了存儲過程,它們被定義在數據庫端,並且進行了預編譯。而且業務邏輯SQL代碼無需在網絡中傳輸,減輕了網絡負擔。可以說存儲過程的優點大於它的缺點。  www.2cto.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.2cto.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";       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對象遍歷得到的數據。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved