안녕하세요.
이와같은 에러에 대해서 검색을 해보니 비슷한 경우가 있었지만 해결이 안되서 질문 올립니다.
에러메세지는 다음과 같습니다.
Project AAA.exe raised exception class EDBEngineError with message ' Capability not supported.'.Process stopped. Use Step or Run to continue.
델파이소스는 다음과 같습니다.
스토어드프로시져를 돌리는 부분입니다.
먼저 질문을 올리신분처럼 저도 스토어드프로시져가 실행되는 부분의 앞과 뒤에 메세지를 만들었습니다.
procedure TFC2_NOR_044P.PC_C2T_NOR_044p;
begin
with Strp_C4T_PM_YY_PROD_N_P do begin
if Active then
Close;
ParamByName('IN_COM_ID').asstring := Fa_getCom_id();
ParamByName('IN_YY').asstring := Formatdatetime('YYYY',DTP_YM.Date);
ParamByName('IN_PUMMOK_CODE').asstring := '%';
ParamByName('IN_OPERATOR').asstring := Fa_GetUser_No();
showmessage('가가가');
ExecProc;
showmessage('나나나');
if Trim(ParamByName('OUT_MSG').asstring) <> '' then
PC_MsgInfo(Self, '실적공수 산출', Trim(ParamByName('OUT_MSG').asstring), True);
end
end;
저도 그분과 마찬가지로 '가가가'는 뜨지만 '나나나'는 뜨지 않더군요.
답글에서는 프로시져에 문제가 있을거라고 해서 저도 확인을 했습니다.
다음은 스토어드프로시져입니다.
CREATE OR REPLACE PROCEDURE C4T_PM_YY_PROD_N_P
(
IN_COM_ID IN CHAR,
IN_YY IN CHAR,
IN_PUMMOK_CODE IN CHAR,
IN_OPERATOR IN CHAR,
OUT_MSG OUT CHAR,
OUT_RV OUT INTEGER
)
IS
HOST_PUMMOK_CODE N05.P1T_PROC_SILJUK_N.PUMMOK_CODE %TYPE; --품목코드
HOST_SILJUK_QTY N07.C2T_EMPMAT_LABOR_TOT_N.WORK_QTY %TYPE; --실적수량
HOST_INWON_WORK_TIME N07.C2T_EMPMAT_LABOR_TOT_N.WORK_QTY %TYPE; --인원시간
HOST_INWON_LOSS_TIME N07.C2T_EMPMAT_LABOR_TOT_N.WORK_QTY %TYPE; --유실시간
HOST_MAN_RATE N07.C4T_PM_YY_PROD_N.MAN_RATE %TYPE; --실적공수
CURSOR SILJUK_CUR IS
SELECT PUMMOK_CODE,
NVL(SUM(INWON_WORK_TIME),0) INWON_WORK_TIME,
NVL(SUM(INWON_LOSS_TIME),0) INWON_LOSS_TIME,
NVL(SUM(SILJUK_QTY),0) SILJUK_QTY
FROM N05.P1T_PROC_SILJUK_N
WHERE COM_ID = IN_COM_ID
AND SILJUK_DATE >= IN_YY||'0101'
AND SILJUK_DATE <= IN_YY||'1231'
AND PUMMOK_CODE LIKE IN_PUMMOK_CODE
GROUP BY PUMMOK_CODE
ORDER BY PUMMOK_CODE ;
BEGIN
OUT_MSG := '';
OUT_RV := -100001;
BEGIN
DELETE N07.C4T_PM_YY_PROD_N
WHERE COM_ID = IN_COM_ID
AND YY = IN_YY
AND PUMMOK_CODE LIKE IN_PUMMOK_CODE;
END;
OPEN SILJUK_CUR;
LOOP
FETCH SILJUK_CUR
INTO HOST_PUMMOK_CODE,
HOST_INWON_WORK_TIME,
HOST_INWON_LOSS_TIME,
HOST_SILJUK_QTY;
EXIT WHEN SILJUK_CUR%NOTFOUND;
IF HOST_SILJUK_QTY = 0 THEN
HOST_MAN_RATE := 0;
ELSE
HOST_MAN_RATE := ROUND(((HOST_INWON_WORK_TIME - HOST_INWON_LOSS_TIME)/60)/HOST_SILJUK_QTY, 5);
END IF;
INSERT INTO N07.C4T_PM_YY_PROD_N(
COM_ID,
YY,
PUMMOK_CODE,
OP_DATE,
OPERATOR,
MAN_RATE
)
VALUES (IN_COM_ID,
IN_YY,
HOST_PUMMOK_CODE,
sysdate,
IN_OPERATOR,
HOST_MAN_RATE
);
END LOOP;
IF SILJUK_CUR%ROWCOUNT = 0 THEN
OUT_MSG := HOST_PUMMOK_CODE||' 은 해당년도에 생산실적이 없습니다.';
OUT_RV := -100000;
ELSE
OUT_MSG := '처리를 완료하였습니다!';
END IF;
COMMIT;
END C4T_PM_YY_PROD_N_P;
이것을 SQLPlus에서 실행하면 문제없이 처리가 됩니다.
글이 너무 길어서 죄송합니다.^^;
도움되는 의견 부탁드립니다.
안녕하세요..
도움이 되실지 모르겠지만 제가 생각하기에는 호환성을 지원하지 않는다는 에러 메시지인거 같네요.
즉, 타입 맞지 않는다는 것 같습니다.
오브젝트 인스펙터에서 Params에서 클릭 하셔서 Editing ?????.Params 창에서
각각의 파라메터를 선택하신 다음에 DataType(알맞은 데이터형), PramType(ptInput / ptOutput) 이런거 설정하시고 다시 한번 해 보시는게 어떨까 싶네요.
제가 보기엔 다 맞게 하신거 같은데 아마도 이런 설정 때문이 아닌가 싶네요...
그럼...