I did the db migration from oracle to pgsql and got the code like below:
CREATE OR REPLACE FUNCTION PKG_UTIL_BD_LOGISTICS_getsignerinfo ( i_opCode T_MQ_LOGIC_TRACK_HEAD_LOG.LP_CODE%TYPE, i_remark T_MQ_LOGIC_TRACK_HEAD_LOG.REMARK%TYPE, i_acceptTime T_MQ_LOGIC_TRACK_HEAD_LOG.SIGNED_TIME%TYPE, i_signer T_MQ_LOGIC_TRACK_HEAD_LOG.SIGNER%TYPE, i_lpcode T_MQ_LOGIC_TRACK_HEAD_LOG.LP_CODE%TYPE, o_signer OUT T_MQ_LOGIC_TRACK_HEAD_LOG.SIGNER%TYPE, o_signerTime OUT T_MQ_LOGIC_TRACK_HEAD_LOG.SIGNED_TIME%TYPE, o_status OUT T_MQ_LOGIC_TRACK_HEAD_LOG.STATUS%TYPE ) RETURNS RECORD AS $body$ DECLARE v_signer T_MQ_LOGIC_TRACK_HEAD_LOG.SIGNER%TYPE; v_signerTime T_MQ_LOGIC_TRACK_HEAD_LOG.SIGNED_TIME%TYPE; v_status T_MQ_LOGIC_TRACK_HEAD_LOG.STATUS%TYPE; BEGIN IF i_lpcode = 'SF' THEN IF i_opCode = '8000' THEN IF POSITION(':back' in i_remark) > 0 THEN v_status := '3'; ELSE v_status := '7'; v_signerTime := i_acceptTime; v_signer := SUBSTR(i_remark, POSITION(':' in i_remark) + 1); END IF; ELSIF i_opCode = '9999' THEN v_status := '3'; ELSIF i_opCode = '80' THEN v_status := '7'; v_signerTime := i_acceptTime; ELSIF i_opCode = 70 THEN v_status := i_opCode; ELSE v_status := '1'; END IF; ELSE IF i_opCode = 'signed' THEN v_signerTime := i_acceptTime; v_signer := i_signer; v_status:='7'; ELSE v_status:='1'; END IF; END IF; o_status := v_status; o_signer := v_signer; o_signerTime := v_signerTime; RETURN 1; EXCEPTION WHEN OTHERS THEN RAISE EXCEPTION '%', 'PKG_UTIL_BD_LOGISTICS.getSignerInfo fetch parameters' || i_remark || 'value error:' || SQLERRM; END; $body$ LANGUAGE PLPGSQL SECURITY DEFINER When I executed the code, I got the error below:
ERROR: RETURN cannot have a parameter in function with OUT parameters
Can someone help? I am new to pgsql.