UPDATE wu_hak.th_gyoj_compl_prearnge SET CRQFC_NO = (select max(to_number(a.crqfc_no))+1 from wu_hak.th_gyoj_compl_prearnge a) , UPD_ID = UPPER('steve') , UPD_DT = sysdate WHERE 1=1 AND YEAR='2001' and reqst_odr = '2180100' and crqfc_no is NULL; --#######################################
자기 자신(table)을 참조로하여 max+1 해서 Update하는데 안되는군요. 물론 시쿼스 테이블 사용하면 됩니다만 그것을 사용하지 않고 자기 자신을 참조했으면 좋겠습니다. commit이 없어서 그런지 max카운트가 똑 같네요. ㅠㅠ
단순한것 같은데 잘모르겠어요. 도움을 주시면 감사하겠습니다.
마농님 질문있습니다.
상기 (SELECT MAX(TO_NUMBER(a.crqfc_no)) FROM wu_hak.th_gyoj_compl_prearnge) 스칼라 쿼리문을
GET_SEQNO_TEACHING_CERTIFICATE() 란 함수로 만들어서 update문을 수정.대체하면 에러가 뜨는데 이유가 무엇일까요? 물론, Select문등 조회에서는 전혀 상관없이 잘 나옵니다.
함수는 다음과 같습니다.
create or replace function WU_HAK.GET_SEQNO_TEACHING_CERTIFICATE return varchar2 is i_cnt integer := 0; v_crqfc_no varchar2(6) := ''; --############################################################# --교원자격증 번호 부여 --############################################################# BEGIN select max(to_number(crqfc_no)) + 1 into i_cnt from wu_hak.th_gyoj_compl_prearnge; IF (i_cnt > 9388) THEN v_crqfc_no := lpad(TO_CHAR(i_cnt),6,'0'); ELSE v_crqfc_no := '009388'; END IF; return v_crqfc_no; EXCEPTION when NO_DATA_FOUND THEN RETURN 'NoData'; when OTHERS then return sqlerrm; --여기 에러를 뱉어내는군요. END;