피비에서는 데이터윈도우를 디비에 업데이트(인서트,델리트,업데이트)할떄
프로시저를 데이터윈도우에 붙여서 액세스가 가능 합니다.
장점은 저장시 복잡한 업무 로직을 프러시저에서 해결 할 수 있음으로 클라이언트 로직이
가벼워 질수 있는것과 유지 보수가 용이 하다는 점입니다. 데이터를 저장 하면서 체크하는 로직이 엄청 많다거나
여러 테이블을 핸드링 해야 할때 좋고.. 주요 업무 로직을 서버쪽에 두기 때문에 쓰리티어 효과도 낼 수 있습니다.
각설 하고 다들 아시겠지만 모르시는 분들을 위해 무조건 따라하기 시작...
환경은 오라클 10g 유저명은 스코트 유저로 부서 테이블에 인서트 업데이트 하는 로직을 예로 설명..
일단 부서테이블에 자료를 넣는 프러시저를 컴파일 합니다. 스크립트는 아래꺼 긁어서 컴파일..
CREATE OR REPLACE PROCEDURE prc_dept (A_DEPTNO NUMBER, A_DNAME VARCHAR2, A_LOC VARCHAR2 ) As
Begin
UPDATE DEPT SET DNAME = A_DNAME, LOC = A_LOC WHERE DEPTNO = A_DEPTNO ; IF SQL%NOTFOUND THEN INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (A_DEPTNO, A_DNAME, A_LOC) ; END IF;
End ;
부서코드 부서명 위치를 입력 받아 부서 테이블에 넣는 초 간단 프러시저 입니다.
(부서코드 낫 파운드 떨어지면 무조건 신규로 입력이 들어 가면 됩니다.)
프러시저 컴파일 하고 나서 데이터 윈도우 그립니다.
프러시저 업데이트 메뉴 선택..
탭이 세개가 나옵니다. 인서트 업데이트 델리트에 대해서 프로시저를 각각 지정 할 수 있습니다
미리 컴파일한 프러시저를 선택 합니다.
dw 상의 컬럼과 프러시저 상의 인풋 아귀먼트를 연결 합니다.
(나중에 dw상의 컬럼 값이 프러시저 아규먼트로 넘어 갑니다.)
프러시저가 인서트나 업데이트일떄 같이 사용가능한 프러시저이기에 업데이트, 인서트탭 똑같이 지정 하고 오케 버튼..
로우 업데이트 프로퍼티는 안하셔도 됩니다.
데이터 윈도우 저장시 해당 로우에 대해서 신규 수정 삭제에 대해서 해당 I/O에 대해서 정의된 프러시저를
태웁니다.
-----------------------
1분만에 만든 초간단 클라이언트 화면..예제..
오픈
// Profile SCOTT SQLCA.DBMS = "O90 Oracle9i (9.0.1)" SQLCA.LogPass = "tiger" SQLCA.LogId = "scott" SQLCA.AutoCommit = False SQLCA.DBParm = "" connect; dw_1.SetTransObject(SQLCA)
조회
dw_1.Retrieve()
입력
dw_1.InsertRow(0)
저장
if dw_1.Update() = 1 Then Commit; Else Rollback; End If |