帮我转换成SQLSERVER 版本
CREATE OR REPLACE PROCEDURE IMES.SP_CHECK_ROUTE (
T_STATIONNAME IN VARCHAR2,
T_SN IN VARCHAR2,
TRES OUT VARCHAR2)
AS
V_COUNT NUMBER;
V_CURRENT_STATION IMES.P_SN_STATUS.STATION_TYPE%TYPE; --当前站
V_NEXT_STATION IMES.P_SN_STATUS.NEXT_STATION_TYPE%TYPE; --下一站
V_WORK_ORDER IMES.P_SN_STATUS.WORK_ORDER%TYPE; --工单
V_ROUTE_NAME IMES.P_SN_STATUS.ROUTE_NAME%TYPE; --route名字
V_START_STATION IMES.P_SN_STATUS.STATION_TYPE%TYPE; --工单对应开始站
V_CURRENT_STATUS IMES.P_SN_STATUS.CURRENT_STATUS%TYPE; --当前状态
V_SNSTATUS VARCHAR2 (100); --当前状态
V_WORK_FLAG IMES.P_SN_STATUS.WORK_FLAG%TYPE; --SN 是否报废,1报废,0 OK
V_INPUT_STATION IMES.P_SN_STATUS.STATION_TYPE%TYPE; --当前站点对应投入站
V_LINE IMES.M_STATION.LINE%TYPE; --线别名字
V_STAGE IMES.M_STATION.STAGE%TYPE; --区段名
V_NEXT_DESC IMES.M_STATION_TYPE.STATION_TYPE_DESC%TYPE; ----下一站描述
BEGIN
---注释页面选择的station对应参数1.0.0.0 By Dulin 2020/12/5
--V1.0.0.1 By Penn 2021/4/21 增加翻译功能
TRES := 'OK';
IMES.SP_GET_PLACE (T_STATIONNAME,
v_LINE,
v_STAGE,
V_INPUT_STATION);
----------------------------------------------------------------SN 当前状态检查---------------------------------------------
BEGIN
------------查询SN当前状态参数-----------------
SELECT A.CURRENT_STATUS,
IMES.FN_SNStatus_Result (CURRENT_STATUS),
A.WORK_FLAG,
A.STATION_TYPE,
A.ROUTE_NAME,
A.NEXT_STATION_TYPE,
A.WORK_ORDER
INTO V_CURRENT_STATUS,
V_SNSTATUS,
V_WORK_FLAG,
V_CURRENT_STATION,
V_ROUTE_NAME,
V_NEXT_STATION,
V_WORK_ORDER
FROM IMES.P_SN_STATUS A
WHERE SERIAL_NUMBER = T_SN AND ROWNUM = 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
--------------SN 不存在------------------------
TRES :=
IMES.FN_GET_TRANSLATE_MSG ('A0001', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
GOTO ENDP;
WHEN OTHERS
THEN
TRES :=
IMES.FN_GET_TRANSLATE_MSG (
'B0001,SP_CHECK_ROUTE,'
|| SQLERRM
|| '<'
|| DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
|| '>', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
GOTO ENDP;
END;
---------------SN的各种状态------------------
IF V_WORK_FLAG = '1'
THEN
TRES := 'SCRAP';
ELSIF V_WORK_FLAG = '3'
THEN
TRES := 'IN LAB';
ELSIF ( V_CURRENT_STATUS = '1'
OR V_CURRENT_STATUS = '2'
OR V_CURRENT_STATUS = '3'
OR V_CURRENT_STATUS = '4'
OR V_CURRENT_STATUS = '7')
THEN
TRES := V_SNSTATUS;
ELSE
SELECT COUNT (*)
INTO V_COUNT
FROM IMES.P_QC_OFFLINE A
WHERE A.SERIAL_NUMBER = T_SN
AND (A.QC_IN_TIME IS NULL OR A.QC_OUT_TIME IS NULL);
IF V_COUNT > 0
THEN
TRES := ' IN OFFLINE QC!';
END IF;
END IF;
IF TRES <> 'OK'
THEN
TRES :=
IMES.FN_GET_TRANSLATE_MSG ('A0182,SCRAP', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
'', --Line
V_INPUT_STATION, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
GOTO ENDP;
END IF;
-------------------------SN Hold 检查-----------------------------
IMES.SP_CHECK_HOLD (T_SN, T_STATIONNAME, TRES);
IF TRES <> 'OK'
THEN
GOTO ENDP;
END IF;
-------------------------------------------------------------------------SN 流程检查---------------------------------------------------------------
-----------没有强制指站-------------
IF (V_NEXT_STATION IS NULL) OR (V_NEXT_STATION = '0')
THEN
-----------------SN生成之后未生产过---------------------
IF (V_CURRENT_STATION = '0')
THEN
BEGIN
-----------查询SN对应工单的默认投入站别-----------------------
SELECT START_STATION_TYPE
INTO V_START_STATION
FROM IMES.P_WO_BASE
WHERE WORK_ORDER = V_WORK_ORDER AND ROWNUM = 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-----------工单不存在---------------------------
TRES :=
IMES.FN_GET_TRANSLATE_MSG ('A0004', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
GOTO ENDP;
WHEN OTHERS
THEN
TRES :=
IMES.FN_GET_TRANSLATE_MSG (
'B0001,SP_CHECK_ROUTE,'
|| SQLERRM
|| '<'
|| DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
|| '>', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
GOTO ENDP;
END;
--如果工单对应站别等于当前所选站点对应的投入站别
IF (V_START_STATION = V_INPUT_STATION)
THEN
TRES := 'OK';
ELSE
SELECT IMES.FN_GET_STATIONTYPE_DESC (V_START_STATION)
INTO V_NEXT_DESC
FROM DUAL;
------工单开始站不存在---------
IF V_NEXT_DESC = '' OR V_NEXT_DESC IS NULL
THEN
--TRES := 'WO Start Station Type NG';
TRES :=
IMES.FN_GET_TRANSLATE_MSG ('A0583', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
ELSE
--------------------------工单开始站点存在,报错SN 流程错误-------------------
TRES :=
IMES.FN_GET_TRANSLATE_MSG (
'A0416,'
|| T_SN
|| ','
|| V_START_STATION
|| '('
|| V_NEXT_DESC
|| ')', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
END IF;
END IF;
ELSE
---------如果SN当前站点不为空,正常流程检查-----------------
BEGIN
--------------------根据当前站点及SN状态和下一站查询流程,能够查到说明流程正确--------------------------
SELECT NEXT_STATION_TYPE
INTO V_NEXT_STATION
FROM IMES.M_ROUTE_DETAIL
WHERE RESULT = V_CURRENT_STATUS
AND ROUTE_NAME = V_ROUTE_NAME
AND STATION_TYPE = V_CURRENT_STATION
AND NEXT_STATION_TYPE = V_INPUT_STATION
AND ROWNUM = 1;
TRES := 'OK';
EXCEPTION
WHEN OTHERS
THEN
BEGIN
--------------------流程错误,获取下一站站点名称并报错---------------------------
SELECT NEXT_STATION_TYPE
INTO V_NEXT_STATION
FROM IMES.M_ROUTE_DETAIL A
WHERE A.ROUTE_NAME = V_ROUTE_NAME
AND A.SEQ =
(SELECT MAX (SEQ)
FROM IMES.M_ROUTE_DETAIL
WHERE STATION_TYPE =
V_CURRENT_STATION
AND ROUTE_NAME = V_ROUTE_NAME
AND RESULT = V_CURRENT_STATUS);
TRES :=
IMES.FN_GET_TRANSLATE_MSG (
'A0416,'
|| T_SN
|| ','
|| V_NEXT_STATION
|| '('
|| IMES.FN_GET_STATIONTYPE_DESC (
V_NEXT_STATION)
|| ')', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
EXCEPTION
WHEN OTHERS
THEN
---------------根据当前站在流程里面查不到下一站,如果是良品状态则ROUTE END,否则REPAIR NG----------
IF V_CURRENT_STATUS = '0'
THEN
TRES := 'ROUTE END';
ELSE
TRES := 'REPAIR NG';
END IF;
END;
END;
END IF;
ELSE
----------------------------------有强制指站-------------------------------
IF ((V_CURRENT_STATUS = '0') OR (V_CURRENT_STATUS = '9'))
THEN
IF V_NEXT_STATION = V_INPUT_STATION
THEN
TRES := 'OK';
ELSE
TRES :=
IMES.FN_GET_TRANSLATE_MSG (
'A0416,'
|| T_SN
|| ','
|| V_NEXT_STATION
|| '('
|| IMES.FN_GET_STATIONTYPE_DESC (V_NEXT_STATION)
|| ')', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
''); --Remark
END IF;
ELSE
TRES := 'REPAIR NG';
END IF;
END IF;
<<ENDP>>
NULL;
EXCEPTION
WHEN OTHERS
THEN
TRES :=
IMES.FN_GET_TRANSLATE_MSG (
'B0001,SP_CHECK_ROUTE,'
|| SQLERRM
|| '<'
|| DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
|| '>', --ERR_CODE,PARAM1,PARAM2..PARAM10
T_SN, --INPUT_VALUE
V_LINE, --Line
T_STATIONNAME, --Station
'SP_CHECK_ROUTE', --PROGRAM
'', --IP
'', --empNo
'');
END;
/
最新发布