2012-02-28 4 views
1

삽입/업데이트 문과 함께 체크 박스를 사용하는 데 문제가 있습니다. 그대로, 각 행 옆에 체크 박스가있는 사용 가능한 신용 카드에 대한 보고서가 있습니다. 사용자는 승인하려는 수만큼 선택하고 제출 버튼을 눌러 프로필을 업데이트 할 수 있습니다. 이것은 내가 붙어있는 곳이다.업데이트가있는 경우 업데이트, 확인란을 기반으로 새 레코드를 삽입하십시오.

나는 신용 카드의 존재 여부에 따라 사용자 프로필 테이블을 업데이트하는 단일 PSQL 프로세스가 필요합니다. 존재하지 않으면 모든 관련 정보를 삽입합니다. 이미 있으면 'Approved_flag'를 'Y'로 변경하여 해당 레코드를 업데이트하면됩니다. 나는 새 레코드를 삽입이 코드 청크를 서면으로 작성했습니다 그리고 그것을 잘 작동합니다 :

FOR i in 1..APEX_APPLICATION.G_F01.count 
LOOP 
    INSERT INTO ls_credit_cards(credit_card_id, created_by, created_on, card_id, user_id, approved_flag) 
    VALUES (apex_application.g_f01(i), :F125_USER_ID,sysdate, :P58_CARDS, :P58_USER, 'Y'); 
END LOOP; 

내가 ORACLE이/다른 명령의 경우 일반적인 지원하지 않는 것으로 알고, 그래서 나는이 조금 연구 및 것으로 나타났습니다 아마도 MERGE 명령을 사용해야하지만, 내가 본 모든 것으로 두 테이블을 사용하게 만든다. 제가 사용하고있는 것은 하나뿐입니다. 모든 데이터는 보고서/체크 박스에서 가져온 것이므로 손실이 발생합니다. 이 인스턴스에서 MERGE 명령을 계속 사용할 수 있습니까? 아니면 내 용도에 도움이 될만한 다른 것이 있습니까?

답변

2

MERGE을 사용할 수 있습니다. `DUAL '에서 데이터를 선택하기 만하면됩니다.

MERGE INTO ls_credit_cards dest 
    USING(SELECT apex_application.g_f01(i) credit_card_id, 
       :F125_USER_ID created_by, 
       sysdate created_on, 
       :P58_CARDS card_id, 
       :P58_USER user_id, 
       'Y' approved_flag 
      FROM dual) src 
     ON(dest.credit_card_id = src.credit_card_id) 
WHEN MATCHED 
THEN 
    UPDATE SET dest.approved_flag = src.approved_flag 
WHEN NOT MATCHED 
THEN 
    INSERT(credit_card_id, 
      created_by, 
      created_on, 
      card_id, 
      user_id, 
      approved_flag) 
    VALUES(src.credit_card_id, 
      src.created_by, 
      src.created_on, 
      src.card_id, 
      src.user_id, 
      src.approved_flag); 
+0

나는 성가시는 것이 싫지만 이것은 100 % 효과가 없습니다. 기존 데이터를 업데이트하는 데는 문제가 없지만 어떤 이유로 든 새 데이터를 삽입하지는 않습니다. 오류 메시지가 없으므로 새로운 레코드를 삽입해야하는 이유에 대해 다시 한 번 분실했습니다. – user1200142

+1

@ user1200142 - 삽입 할 새 행이 있습니까? 또는 아마도 일치하는 열이 잘못되었을 것으로 예상되며 단순히 'CREDIT_CARD_ID' 열 이외의 다른 열과 일치해야합니다. 아마도 당신은 다른'ID' 칼럼들 중 일부와 일치해야할까요? –

+0

문제점은 저의 창조물이었습니다. 나는 부적절하게 신품으로 삽입 될 카드에 신용 카드 ID를 할당했습니다. ID를 하드 코딩하면 완벽하게 작동합니다. 그것은 단지 창조적 인 문제 해결의 약간을해야만한다는 것을 의미합니다! 대단히 고마워, 이건 완벽 해! – user1200142

관련 문제