Store Procedured adalah sebuah kelompok kode SQL yang di simpan di katalog database dan
dapat di panggil kemudian oleh program, trigger atau bahkan stored
procedure. Sebuah Stored Procedure yang memanggil dirinya sendiri disebut rekursif stored procedure.
Untuk langkah pertama, persiapkan Database beserta Table'nya:
- table STUDENT didalam schema KAMPUS :
Setelah itu, buat Store Procedure :
Kemudian beralih ke Program Java, untuk memanggil Store Procedure yang telah kita buat tadi :
Sekian Proses pemanggilan Store Procedure
Untuk langkah pertama, persiapkan Database beserta Table'nya:
- table STUDENT didalam schema KAMPUS :
CREATE
TABLE
"
KAMPUS"
.
"
STUDENT"
(
"NIM"
VARCHAR2(20 BYTE)
NOT
NULL
ENABLE,
"NAME"
VARCHAR2(50 BYTE),
"ADDRESS"
VARCHAR2(100 BYTE),
CONSTRAINT
"
STUDENT
"
PRIMARY
KEY
(
"NIM"
)
USING
INDEX
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE
STATISTICS
STORAGE(INITIAL 65536
NEXT
1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL
DEFAULT
FLASH_CACHE
DEFAULT
CELL_FLASH_CACHE
DEFAULT
)
TABLESPACE
"TB_SPACE"
ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536
NEXT
1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL
DEFAULT
FLASH_CACHE
DEFAULT
CELL_FLASH_CACHE
DEFAULT
)
TABLESPACE
"TB_SPACE"
;
Setelah itu, buat Store Procedure :
create
or
replace
PROCEDURE
SP_STUDENT
(
nim_in
IN
student
.nim%type,
name_in
IN
student
.
name
%type,
address_in
IN
student
.address%type,
result_cursor
OUT
SYS_REFCURSOR
)
AS
BEGIN
INSERT
INTO STUDENT
(
nim,
name
,
address
)
VALUES
(
nim_in,
name_in,
address_in
);
OPEN
result_cursor
FOR
select
'success'
as
status
from
dual;
EXCEPTION
WHEN
DUP_VAL_ON_INDEX
THEN
OPEN
result_cursor
FOR
select
'error'
as
status
from
dual;
END
;
Kemudian beralih ke Program Java, untuk memanggil Store Procedure yang telah kita buat tadi :
public Mahasiswa insert(Mahasiswa o) throws SQLException {
//use store procedure oracle
String insertMahasiswa = "{call kampus.sp_student
(?,?,?,?)}";
CallableStatement callableStatement = DatabaseUtilities.getConnection().prepareCall(insertMahasiswa);
callableStatement.setString(1, o.getNim());
callableStatement.setString(2, o.getNama());
callableStatement.setString(3, o.getAlamat());
callableStatement.registerOutParameter(4, OracleTypes.CURSOR);
callableStatement.executeUpdate();
ResultSet rs = (ResultSet) callableStatement.getObject(4);
if(rs.next()){
o.setStatus(rs.getString("status"));
System.out.println(rs.getString("status"));
}
return o;
}
Sekian Proses pemanggilan Store Procedure