개발 언어 C#, DB : Oracle 11g
질문사항
- 클라이언드에서 배열로 오라클 package 호출하여 데이타 저장 시
- 아래 구현한 delete 부분을 한번만 실행 할 수 있게 하는 방법 있는지요?
- 물론 따로 구현 하면 되지만, 한번에 처리 할 수 있는 방법이 있는가 해서요.
procedure Mat_SetMenuGrant
(
pGrantGroup in SetMenuGrant.GrantGroup%type,
pMenuKey in SetMenuGrant.MenuKey%type
)
Is
begin
Delete From SetMenuGrant; <--- 이부분을 처음 한번만 실행 하고 싶은데 어떻게 해야 하나요 ??????????????????????????
Merge Into SetMenuGrant
USING DUAL
ON (GrantGroup = pGrantGroup and MenuKey = pMenuKey)
When Matched Then
Update Set MenuUse = pMenuUse Where GrantGroup = pGrantGroup and MenuKey = pMenuKey
When Not Matched Then
Insert(GrantGroup, MenuKey, MenuUse) Values(pGrantGroup, pMenuKey, pMenuUse);
Commit;
end Mat_SetMenuGrant;
마농님 답변 감사합니다.
제가 설명이 좀 부족 했네요.
클라이언트에서는 루프안에 프로시저가 있는 것은 아님니다. 프로시저는 한번만 호출합니다.
- 클라이어트에서 그리드에 있는 데이터를 루프를 사용하여 배열에 저장 (벌크인서트 구현을 위함)
- 클라이언드에서 오라클 프로시저 한번만 호출
- 기존 저장된 데이터 삭제
- 오라클에 데이터 저장
위 처럼 하려고 하는데,,,
- 간단하게 처리 하는 방법은, 프로시저를 두개 만들어
첫번째 프로시저는 기존 데이터 삭제를 하고
두번째 프로시저는 데이터 저장을 하면 되지만
- 첫번째 와 두번째를 하나에 프로시저로 구현 하고 싶어어서 입니다.
감사합니다.