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