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 STATISTICSSTORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 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 LOGGINGSTORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 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 replacePROCEDURE 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)ASBEGIN 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