학원/JDBC
10/24 27-12 (UpdateProc.CallableStatement)
도원결의
2022. 10. 24. 20:22
수정용 오라클 함수
create or replace PROCEDURE sp_UDT_member
(
--매개변수 정의!
id IN member.username%TYPE,
pass IN member.password%TYPE,
name_ IN member.name%TYPE,
rtval OUT NCHAR
)
IS
BEGIN
------수정시 모두 변수로 처리됨, 그래서 컬럼명과 변수 다르게 해야함
UPDATE member SET password=pass,name=name_
WHERE username= id;
if sql%found THEN
rtval := '입력성공';
COMMIT;
else -- 존재하지 않은 id로 수정 시
rtval := 'ID가 존재하지 않아요';
END iF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;-- 실행이 1개밖에 없어 의미 없지만 그래도 써놔
rtval := '입력실패: 입력값이 너무 길어요';
END;
public class UpdateProc extends IConnectImpl {
public UpdateProc() {
connect(ORACLE_URL,"KOSMO","KOSMO");
}
@Override
public void execute() throws Exception {
csmt = conn.prepareCall("{call sp_UDT_member (?,?,?,?)}");
//인파라
csmt.setString(1,getValue("수정 할 아이디"));
csmt.setString(2,getValue("비밀번호"));
csmt.setString(3,getValue("이름"));
//아웃파라
csmt.registerOutParameter(4,Types.NCHAR);
System.out.println(csmt.execute());
System.out.println("프로시저의 아웃 파라미터 값:"+csmt.getString(4));
close();
}
public static void main(String[] args) throws Exception {
new UpdateProc().execute();
}
}