컴퓨터활용/프로프레임

[프로프레임] Conditions can't call the right function

멜번초이 2019. 8. 3. 01:31
반응형

프로프레임에서 dbio를 호출하였는데 오류가 발생하였다. 오류 번호로 리턴된 값은 -90001002 이고 오류메시지는 [DBIO] Conditions can't call the right function 이다.  어떤 경우에 이런 오류가 나오는 것일까? 

처음 프로프레임 dbio 를 array fetch 로 작성하였을 때 관련한 배열처리 내부 함수들이 만들어 진다. 이런 array fetch dbio를 프로그램에 끌어다 사용하였을 것이다. 그 후에 개발자가 dbio 를 단건 fetch 로 변경하였다. 그리고 dbio를 컴파일 했다. 그러나 정작 이 dbio를 사용하고 있는 프로그램은 다시 컴파일을 하거나 재구성을 하지 않았다.  이런 경우에 프로그램이 실행될 때는 이전의 array fetch 함수를 계속 호출할 것이다.  그러나 관련 dbio 함수는 더 이상 존재하지 않는다. 

해결 방법은 프로그램에서 모듈정보재구성을 한 후 컴파일이 정상적으로 될 때까지 관련된 입출력 변수를 다시 맞춰준다.   array 구조체였던 것을 단건 구조체로 변경됐을 경우 입출력 구조체가 변경되었기 때문에 컴파일 오류가 발생될 것이다. 

-90001002 오류는 한글로는 "조건에 맞는 함수를 호출할 수 없습니다" 이며 이것은 해당 함수가 없다는 것인데 해당 DBIO의 .pc 를 열어보면 단건 fetch의 경우  Open, Fetch, Close 함수만 만들어져 있는 것을 볼 수 있다. 이 때 Update 함수를 호출하거나 Array처리함수를 호출했을 때 위의 오류가 발생된다.  Fetch 후 UpdateCursor 를 할 때 반드시 Update 함수가 만들어져(gen)되어 있는 지 확인해야 한다.  Persist 이면서 PK 로 조회하고 전체컬럼을 조회하는 DBIO인 경우에는 Update 함수가 만들어지고 프로그램에서 UpdateCursor를 실행할 수 있다. 
EMB스튜디오에서 View타입으로 dbio을 만든 후 실행노드추가를 이용하여 UpdateCursor 를 시도하게 되면 -90001002  오류가 나오게 될 것이다. 원칙적으로 View타입은 Update를 할 수가 없다. 

반응형