Computer >> Máy Tính >  >> Lập trình >> MySQL

Các thủ tục được lưu trữ là gì? Làm thế nào để gọi các thủ tục được lưu trữ bằng chương trình JDBC?

Các thủ tục được lưu trữ là các thủ tục con, phân đoạn của các câu lệnh SQL được lưu trữ trong danh mục SQL. Tất cả các ứng dụng có thể truy cập Cơ sở dữ liệu quan hệ (Java, Python, PHP, v.v.), đều có thể truy cập các quy trình này.

Các thủ tục được lưu trữ chứa các tham số IN và OUT hoặc cả hai. Chúng có thể trả về tập kết quả trong trường hợp bạn sử dụng câu lệnh SELECT, chúng có thể trả về nhiều tập kết quả.

Ví dụ

Giả sử chúng ta có một bảng có tên Công văn trong cơ sở dữ liệu MySQL với dữ liệu sau:

+--------------+------------------+------------------+------------------+
| Product_Name | Date_Of_Dispatch | Time_Of_Dispatch | Location         |
+--------------+------------------+------------------+------------------+
| KeyBoard     | 1970-01-19       | 08:51:36         | Hyderabad        |
| Earphones    | 1970-01-19       | 05:54:28         | Vishakhapatnam   |
| Mouse        | 1970-01-19       | 04:26:38         | Vijayawada       |
+--------------+------------------+------------------+------------------+

Và nếu chúng ta đã tạo một thủ tục có tên là myProcedure để lấy các giá trị từ bảng này như hình dưới đây:

Create procedure myProcedure ()
-> BEGIN
-> SELECT * from Dispatches;
-> END //

Ví dụ

Sau đây là một ví dụ JDBC gọi thủ tục được lưu trữ được đề cập ở trên bằng cách sử dụng chương trình JDBC.

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class CallingProcedure {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());

      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Preparing a CallableStateement
      CallableStatement cstmt = con.prepareCall("{call myProcedure()}");
      //Retrieving the result
      ResultSet rs = cstmt.executeQuery();
      while(rs.next()) {
         System.out.println("Product Name: "+rs.getString("Product_Name"));
         System.out.println("Date Of Dispatch: "+rs.getDate("Date_Of_Dispatch"));
         System.out.println("Date Of Dispatch: "+rs.getTime("Time_Of_Dispatch"));
         System.out.println("Location: "+rs.getString("Location"));
         System.out.println();
      }
   }
}

Đầu ra

Connection established......
Product Name: KeyBoard
Date of Dispatch: 1970-01-19
Time of Dispatch: 08:51:36
Location: Hyderabad

Product Name: Earphones
Date of Dispatch: 1970-01-19
Time of Dispatch: 05:54:28
Location: Vishakhapatnam

Product Name: Mouse
Date of Dispatch: 1970-01-19
Time of Dispatch: 04:26:38
Location: Vijayawada