쿼리 실행 성공 여부가 일정하지 않습니다.

by ozro posted Oct 21, 2022


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
리눅스 64 비트 
CUBRID Ver.
11.2
CUBRID TOOL Ver.
sqlgate
응용 환경(API)
 


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

함수 사용이 많고 쿼리문 작성시 함수 때문에 에러가 너무 자주나 

 

임시 테이블로 함수부분만 분리하여 쿼리를 만들었습니다. 

 

(함수를 사용한건 조인이 너무많고 데이터 가공이 필요해서 어쩔수 없는 부분이 있습니다. )

 

이렇게 해도 쿼리 성공 여부가 항상 일정하지가 않습니다. 계속 잘 실행되다가도

 

stored procedure .... 에러가 발생합니다. 왜 그럴까요???

 

with tmp as (
select 
 wh.reg_no,wh.rank_no,
 GET_CG_RD_SITE_NMS1(wh.reg_no, wh.rank_no) as GET_CG_RD_SITE_NMS1,
 GET_CD_NM('G',wh.lnd_r) as G_GET_CD_NM,
 GET_CG_WON_SML_RN(wh.reg_no, 1) as GET_CG_WON_SML_RN,
 GET_CG_WON_MK_NMS(wh.reg_no,wh.rank_no) as GET_CG_WON_MK_NMS,
 GET_CG_RD_DUP( wh.reg_no, wh.rank_no) as GET_CG_RD_DUP,
 GET_CG_RD_RANK(wh.reg_no) as GET_CG_RD_RANK
from won_his wh , reg_site_his rsh ,reg_mk_his rmh 
where wh.reg_no = rsh.reg_no 
and   wh.reg_no = rmh.reg_no
and   wh.rank_no = rsh.rank_no
and   wh.rank_no = rmh.rank_no
AND   wh.rank_no=1 
and   wh.reg_no='000125'
and rownum=1
)

select 
       wh.seq_no,
       FMT('D',wh.acc_dt) as acc_dt1, 
       to_number(wh.reg_no) as reg_no,
       to_number(wh.reg_no) as reg_no1,
       GET_CG_RD_SITE_NMS1 as RD_SITE_NM1, 
       IF(CHAR_LENGTH(RTRIM(wh.lnd_r)) > 0,'제'|| wh.lnd_r ||'호','') as LND_COMBO, 
       IF(CHAR_LENGTH(RTRIM(wh.acc_no)) > 0,'제'|| to_number(wh.acc_no) ||'호','') as ACC_COMBO,
       IF(length(wh.lnd_r)>1 and wh.land_chg='1','#','')||IF(wh.lnd_r='000','',G_GET_CD_NM)||IF(G_GET_CD_NM = '' and wh.lnd_r!='000','@','')||       
       IF(length(wh.lnd_r)>1 and wh.land_chg='1','#','')||IF(CHAR_LENGTH(RTRIM(wh.lnd_no)) > 0, to_number(wh.lnd_no) ||'호','')||IF(GET_CG_WON_SML_RN = '','@','')|| 
       IF(GET_CG_WON_SML_RN = '' and wh.sml_chg='1','#','')||GET_CG_WON_SML_RN as lnd_combo1,
       GET_CG_WON_MK_NMS as MK_NM,
       wh.reg_area, 
       FMT_DT(replace(dt_fr,'-',''),'M')||' '||IF(length(dt_fr)>2,'부터','') as dt_fr,
       FMT_DT(replace(dt_to,'-',''),'M')||' '||IF(length(dt_to)>2,'까지','') as dt_to,
       IF(wh.term_yr='0','',wh.term_yr)||IF(wh.term_yr='0','','년') as term_yr,
       FMT_DT(replace(dt_fr,'-',''),'M')||' '||IF(length(dt_fr)>2,'부터 ','')||FMT_DT(replace(dt_to,'-',''),'M')||' '||IF(length(dt_to)>2,'까지@','')||
       IF(wh.term_yr='0','',wh.term_yr)||''||IF(wh.term_yr='0','','년') as dt_info,
       to_char(term_yr) as lt,
       FMT_DT(replace(wh.reg_dt,'-',''),'M') as reg_dt1,
       case when reg_dt > '20011231' then '' else '광업 등록령 제91조에 의거 2001년 12 월 31일 전산이기' end as tt,
       rsh.chg_yn, 
       rmh.chg_yn as rmh_yn, 
       wh.area_chg, 
       wh.dt_chg,
       wh.reg_area|| ' ' ||decode(area_gbn,'1','평','0','ha') as reg_area_gbn, 
       IF(CHAR_LENGTH(RTRIM(armk_lst)) > 0,'부'||replace(armk_lst,',',', 부'),'') as R_ARMK_LST,
       decode(armk_no,'0','',IF(CHAR_LENGTH(RTRIM(armk_no)) > 0,'부기'|| armk_no ||'호','')) as R_ARMK_NO,          
       wh.land_chg,
       wh.sml_chg,
       wh.chg_cnt,  
       to_number(wh.reg_no) as reg_first,
       IF(GET_CG_RD_DUP = '','','광구중복@')||GET_CG_RD_DUP||
       IF(GET_CG_RD_DUP = '','','@')||wh.chg_cnt as DUP_REG_NO_NMS,
       GET_CG_RD_RANK as rankno
from  cg_won_his wh, cg_reg_site_his rsh, cg_reg_mk_his rmh,  tmp b
where wh.reg_no = rsh.reg_no 
and   wh.reg_no = rmh.reg_no
and   wh.reg_no = b.reg_no
and   wh.rank_no = rsh.rank_no
and   wh.rank_no = rmh.rank_no
and   wh.rank_no = b.rank_no
and wh.rank_no=1 
and wh.reg_no='000125'
and rownum=1;