Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

저장 프로시저의 장점은 무엇입니까?

<시간/>

저장 프로시저의 장점은 다음과 같습니다.

  • 저장 프로시저는 컴파일되어 저장되기 때문에 프로시저를 호출할 때마다 응답이 빠릅니다.

  • 프로시저에서 필요한 모든 SQL 문을 그룹화하여 한 번에 실행할 수 있습니다.

  • 프로시저가 클라이언트보다 빠른 데이터베이스 서버에 저장되기 때문입니다. 그것을 사용하여 모든 복잡한 쿼리를 실행할 수 있으므로 더 빠릅니다.

  • 프로시저를 사용하면 코드의 반복을 피할 수 있으며 저장 함수 호출과 같은 추가 SQL 기능을 사용할 수 있습니다.

  • 저장 프로시저를 컴파일하면 여러 응용 프로그램에서 사용할 수 있습니다. 변경이 필요한 경우 애플리케이션 코드를 건드리지 않고 절차를 변경할 수 있습니다.

  • Java에서 PL/SQL 저장 프로시저를 호출하고 PL/SQL에서 Java 저장 프로시저를 호출할 수 있습니다.

예시

다음 설명이 포함된 Employees라는 테이블을 생성했다고 가정합니다.

+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| Name     | varchar(255) | YES  |     | NULL    |       |
| Salary   | int(11)      | NO   |     | NULL    |       |
| Location | varchar(255) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

다음과 같이 Employees 테이블에 데이터를 삽입하는 myProcedure라는 프로시저가 있다고 가정합니다.

Create procedure myProcedure (IN name VARCHAR(30), IN sal INT, IN loc VARCHAR(45))
   -> BEGIN
   -> INSERT INTO Employees(Name, Salary, Location) VALUES (name, sal, loc);
   -> END //

다음 JDBC 프로그램은 위에서 언급한 Java 저장 프로시저를 호출합니다.

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Example {
   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/testdb";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Preparing a CallableStatement
      CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");
      cstmt.setString(1, "Amit");
      cstmt.setInt(2, 3000);
      cstmt.setString(3, "Hyderabad");
      cstmt.execute();
      cstmt.setString(1, "Kalyan");
      cstmt.setInt(2, 4000);
      cstmt.setString(3, "Vishakhapatnam");
      cstmt.execute();
   }
}

출력

Connection established......

Employees 테이블의 내용을 확인하면 아래와 같이 새로 추가된 행을 찾을 수 있습니다.

+-----------+--------+----------------+
| Name      | Salary | Location       |
+-----------+--------+----------------+
| Amit      | 3000   | Hyderabad      |
| Kalyan    | 4000   | Vishakhapatnam |
+-----------+--------+----------------+