저장 프로시저의 장점은 다음과 같습니다.
-
저장 프로시저는 컴파일되어 저장되기 때문에 프로시저를 호출할 때마다 응답이 빠릅니다.
-
프로시저에서 필요한 모든 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 | +-----------+--------+----------------+