맨 아래와 같이 PL_SQL 프로시저를 구성하구여...
storedProc를 사용하면여..
분명이 값이 리턴이 되어야 되는데.. 그냥 0만 나오네여..
에러는 나지 않는데 말이져..
뭐가 틀린건지.. 어떻게 하면 리턴을 받을수 있는지좀 갈쳐주세요..
[Delphi...에서...]
With StoredProc1 do
begin
StoredProc1.StoredProcName := 'CR_DRIVERSAFETY_MANAGER';
Params.Clear;
Params.CreateParam(ftString,'REQ_SOCNO',ptInput).AsString := '4444' ;
Params.CreateParam(ftInteger,'Result',ptOutput);
ACTIVE;
Edit1.Text := IntToStr(Params.ParamValues['Result']);
end;
[프로시저 임당.]
FUNCTION CR_driversafety_manager(req_socno DRIVERTBL.soc_no%TYPE)
RETURN NUMBER
/*==================================================*/
/* 안전관리체크 */
/* Return Value */
/* 0 : 현재작업일자정보이상(outdate in wrktbl)*/
/* 1 : 출입허가(정상) */
/* 2 : 출입정지(정상) */
/* 91 : 기사정보미등록(drvertbl with socno) */
/* REMARK : SK CLX T/T 1999-2000 */
/* */
/*==================================================*/
IS
rec_drvertbl DRIVERTBL%ROWTYPE;
ret_val NUMBER;
-- 기사정보
CURSOR c1 IS SELECT *
FROM DRIVERTBL
WHERE soc_no = req_socno;
BEGIN
OPEN c1;
FETCH c1 INTO rec_drvertbl;
IF c1%notfound THEN
CLOSE c1;
RETURN 91;
END IF;
CLOSE c1;
IF rec_drvertbl.DRIVER_STATUS = 'Y' THEN
RETURN 2;
END IF;
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN -1;
END;
이렇게 한번 해보세요...
ptResult 이렇게 변경.....
ExecProc; 로 변경....
With StoredProc1 do
begin
StoredProcName := 'CR_DRIVERSAFETY_MANAGER';
Params.Clear;
Params.CreateParam
(ftString,'REQ_SOCNO',ptInput).AsString := '4444' ;
Params.CreateParam(ftInteger,'Result',ptResult);
ExecProc;
Edit1.Text := IntToStr(Params.ParamValues['Result']);
end;