我在一个过程使用了另一个过程,可是执行总是不能达到预期效果,存储过程如下:
CREATE OR REPLACE PROCEDURE
SAJET.SJ_CHK_TIME_OUT(TSN IN VARCHAR2, TRES OUT VARCHAR2) IS
i number;
ttime1 date;
ttime2 date;
--tresult VARCHAR2(20);
BEGIN
-- OK := 'CMD NG';
select out_process_time into ttime1 from g_sn_status where serial_number=TSN;
select sysdate into ttime2 from dual;
i:=round((ttime2-ttime1)*24);
if i<10 then
tres:='TIME NOT OVER!';
ELSE
TRES :='OK';
end if;
END;
/在另一个过程中调用:
CREATE OR REPLACE PROCEDURE SAJET.SJ_EDA_SN_TRANSFER4 (
TTERMINALID IN NUMBER,
TREV IN VARCHAR2,
TEMP IN VARCHAR2,
TWO IN VARCHAR2,
TNOW IN DATE,
TRES OUT VARCHAR2,
TDEFECT IN VARCHAR2,
TNEXTPROC OUT VARCHAR2
)
IS
CEMPID NUMBER;
--TTRES VARCHAR2(20);
BEGIN
TRES := 'OK';
SAJET.SJ_GET_EMPID(TEMP, CEMPID);
SAJET.SJ_CHK_TIME_OUT(TREV, TRES);
IF TRES = 'OK' THEN
SAJET.SJ_TRANSFER(TTERMINALID, TREV, TDEFECT, TNOW, TEMP, TTRES, TNEXTPROC);
ELSE
TRES:='TIME NOT OVER!';
END IF; IF TRES = 'OK' THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
EXCEPTION
WHEN OTHERS THEN
TRES := 'SJ_EDA_SN_TRANSFER4 ERROR';
END;
/
预期的效果应该是if i<10 then tres:='TIME NOT OVER!';但是这个始终都没有出现,都是i>10的结果,直接显示了OK,而我在TOAD中调用时,反馈的却是正常的
CREATE OR REPLACE PROCEDURE
SAJET.SJ_CHK_TIME_OUT(TSN IN VARCHAR2, TRES OUT VARCHAR2) IS
i number;
ttime1 date;
ttime2 date;
--tresult VARCHAR2(20);
BEGIN
-- OK := 'CMD NG';
select out_process_time into ttime1 from g_sn_status where serial_number=TSN;
select sysdate into ttime2 from dual;
i:=round((ttime2-ttime1)*24);
if i<10 then
tres:='TIME NOT OVER!';
ELSE
TRES :='OK';
end if;
END;
/在另一个过程中调用:
CREATE OR REPLACE PROCEDURE SAJET.SJ_EDA_SN_TRANSFER4 (
TTERMINALID IN NUMBER,
TREV IN VARCHAR2,
TEMP IN VARCHAR2,
TWO IN VARCHAR2,
TNOW IN DATE,
TRES OUT VARCHAR2,
TDEFECT IN VARCHAR2,
TNEXTPROC OUT VARCHAR2
)
IS
CEMPID NUMBER;
--TTRES VARCHAR2(20);
BEGIN
TRES := 'OK';
SAJET.SJ_GET_EMPID(TEMP, CEMPID);
SAJET.SJ_CHK_TIME_OUT(TREV, TRES);
IF TRES = 'OK' THEN
SAJET.SJ_TRANSFER(TTERMINALID, TREV, TDEFECT, TNOW, TEMP, TTRES, TNEXTPROC);
ELSE
TRES:='TIME NOT OVER!';
END IF; IF TRES = 'OK' THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
EXCEPTION
WHEN OTHERS THEN
TRES := 'SJ_EDA_SN_TRANSFER4 ERROR';
END;
/
预期的效果应该是if i<10 then tres:='TIME NOT OVER!';但是这个始终都没有出现,都是i>10的结果,直接显示了OK,而我在TOAD中调用时,反馈的却是正常的
就是你的存储过程是何作用?
我运行了 一番,错太多