已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
26天前关闭。
Improve this question
我检查了一些SQL验证网站,他们发现这个脚本工作,它是正确的,但当我在数据库中进行查询,它返回我的一些错误,我将显示如下。我该怎么办?
我的数据库:Oracle版本12c。我使用的是SqlDbx。
脚本:
CREATE OR REPLACE PROCEDURE SPE210EST()
IS
v_QtdDis LONG;
v_TraDep LONG;
v_QtdFat LONG;
v_QtdDev LONG;
v_QtdOrd LONG;
v_QtdEst LONG;
v_QtdBlo LONG;
v_QtdRae LONG;
v_QtdRes LONG;
v_CodEmp NUMBER;
v_CodPro VARCHAR(14);
v_CodDer VARCHAR(7);
v_CodDep VARCHAR(10);
BEGIN
SELECT E210EST.CodEmp INTO v_CodEmp, E210EST.CodPro INTO v_CodPro, E210EST.CodDer INTO v_CodDer, E210EST.CodDep INTO v_CodDep, E210EST.QtdEst INTO v_QtdEst, E210EST.QtdBlo INTO v_QtdBlo, E210EST.QtdRae INTO v_QtdRae, E210EST.QtdRes INTO v_QtdRes, E210EST.QtdOrd INTO v_QtdOrd
FROM E210EST, E075PRO
WHERE E210EST.CodEmp = E075PRO.CodEmp
AND E210EST.CodPro = E075PRO.CodPro
AND E210EST.CodDep IN ('1','3','4','5','9')
AND (CASE WHEN (E210EST.QtdEst - E210EST.QtdBlo - E210EST.QtdRae - E210EST.QtdRes) < 0 THEN 0 ELSE E210EST.QtdEst - E210EST.QtdBlo - E210EST.QtdRae - E210EST.QtdRes END) <> (CASE WHEN E210EST.CodDep = '1' THEN E075PRO.USU_Dep1 WHEN E210EST.CodDep = '3' THEN E075PRO.USU_Dep3 WHEN E210EST.CodDep = '4' THEN E075PRO.USU_Dep4 WHEN E210EST.CodDep = '5' THEN E075PRO.USU_Dep5 WHEN E210EST.CodDep = '9' THEN E075PRO.USU_Dep9 END);
v_QtdDis := (:v_QtdEst - :v_QtdBlo - :v_QtdRae - :v_QtdRes);
v_QtdOrd := :v_QtdOrd;
v_QtdFat := 0;
v_TraDep := 0;
v_QtdDev := 0;
IF (:v_CodDep = '1' OR :v_CodDep = '3' OR :v_CodDep = '4' OR :v_CodDep = '5' OR :v_CodDep = '9') THEN
SELECT CASE WHEN SUM(CASE WHEN REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(UPPER(E000IPC.UNINFC),'Ç','C'),' ',''),'UND','UN'),'PT','UN'),'M','MT'),'RL','UN') <> E075PRO.UNIMED
THEN (SELECT CASE WHEN E015TCU.TIPCNV = '*' THEN E000IPC.QTDREC * E015TCU.VLRCNV
WHEN E015TCU.TIPCNV = '/' THEN E000IPC.QTDREC / E015TCU.VLRCNV END
FROM E015TCU
WHERE E015TCU.UNIMED = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(UPPER(E000IPC.UNINFC),'Ç','C'),' ',''),'UND','UN'),'PT','UN'),'M','MT'),'RL','UN')
AND E015TCU.UNIME2 = E075PRO.UNIMED)
ELSE E000IPC.QTDREC END) IS NULL THEN 0
ELSE SUM(CASE WHEN REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(UPPER(E000IPC.UNINFC),'Ç','C'),' ',''),'UND','UN'),'PT','UN'),'M','MT'),'RL','UN') <> E075PRO.UNIMED
THEN (SELECT CASE WHEN E015TCU.TIPCNV = '*' THEN E000IPC.QTDREC * E015TCU.VLRCNV
WHEN E015TCU.TIPCNV = '/' THEN E000IPC.QTDREC / E015TCU.VLRCNV END
FROM E015TCU
WHERE E015TCU.UNIMED = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(UPPER(E000IPC.UNINFC),'Ç','C'),' ',''),'UND','UN'),'PT','UN'),'M','MT'),'RL','UN')
AND E015TCU.UNIME2 = E075PRO.UNIMED)
ELSE E000IPC.QTDREC END)
END INTO v_TraDep
FROM E000NFC,E000IPC,E070FIL,E095FOR,E403FPR,E075PRO
WHERE E000NFC.SITNFC = '1'
AND E000NFC.TIPNFE = 1
AND E000NFC.STANFV <> 3
AND E000NFC.INDCAN <> 'S'
AND E000NFC.CGCFIL = E000IPC.CGCFIL
AND E000NFC.CGCFOR = E000IPC.CGCFOR
AND E000NFC.CHVNEL = E000IPC.CHVNEL
AND E403FPR.CODEMP = E075PRO.CODEMP
AND E403FPR.CODPRO = E075PRO.CODPRO
AND E403FPR.CODEMP = :v_CodEmp
AND E403FPR.CODPRO = :v_CodPro
AND E403FPR.CODDER = :v_CodDer
AND E000IPC.CODDEP = :v_CodDep
AND E000IPC.CODDEP IN ('1','3','4','5','9')
AND E000IPC.NOPPRO IN ('5101','5102','5401','5402','5403','5405','6101','6102','6401','6402','6403','6404')
AND E070FIL.NUMCGC = E000NFC.CGCFIL
AND E095FOR.CGCCPF = E000NFC.CGCFOR
AND E403FPR.CODEMP = E070FIL.CODEMP
AND E403FPR.CODFOR = E095FOR.CODFOR
AND E403FPR.PROFOR = E000IPC.PROFOR;
SELECT CASE WHEN SUM(E140IPV.QTDFAT) IS NULL THEN 0 ELSE SUM(E140IPV.QTDFAT) END INTO V_QtdFat
FROM E140NFV, E140IPV, E090REP, E001TNS, E120PED
WHERE E140NFV.CODEMP = E140IPV.CODEMP
AND E140NFV.CODFIL = E140IPV.CODFIL
AND E140NFV.CODSNF = E140IPV.CODSNF
AND E140NFV.NUMNFV = E140IPV.NUMNFV
AND E140NFV.CODREP = E090REP.CODREP
AND E120PED.CODEMP = E140IPV.CODEMP
AND E120PED.CODFIL = E140IPV.FILPED
AND E120PED.NUMPED = E140IPV.NUMPED
AND E120PED.USU_PEDPRJ <> 'P'
AND E140NFV.CODSNF = 'NFE'
AND E140NFV.CODFIL IN (1,3,4,5,9)
AND E140NFV.DATEMI >= (SYSDATE-91)
AND E140NFV.DATEMI < (SYSDATE)
AND E140NFV.SITNFV = '2'
AND E140NFV.TIPNFS IN (1,10)
AND E140IPV.CODPRO = :v_CodPro
AND E140IPV.CODDER = :v_CodDer
AND E140IPV.CODDEP IN ('1','3','4','5','9')
AND E090REP.USU_GrpRep = TO_NUMBER(:v_CodDep)
AND E140IPV.CODEMP = E001TNS.CODEMP
AND E140IPV.TNSPRO = E001TNS.CODTNS
AND E001TNS.VENFAT = 'S'
AND E140IPV.CODEMP = :v_CodEmp;
SELECT CASE WHEN SUM(E440IPC.QTDEST) IS NULL THEN 0 ELSE SUM(E440IPC.QTDEST) END INTO v_QtdDev
FROM E440NFC,E075PRO,E440IPC,E001TNS,E090REP
WHERE E440NFC.CODEMP = :v_CodEmp
AND E440NFC.CODFIL IN (1,3,4,5,9)
AND E440NFC.DATENT >= (SYSDATE-91)
AND E440NFC.DATENT < (SYSDATE)
AND E440IPC.CODEMP = E440NFC.CODEMP
AND E440IPC.CODFIL = E440NFC.CODFIL
AND E440IPC.CODFOR = E440NFC.CODFOR
AND E440IPC.NUMNFC = E440NFC.NUMNFC
AND E440IPC.CODSNF = E440NFC.CODSNF
AND E440IPC.CODEMP = E075PRO.CODEMP
AND E440IPC.CODPRO = E075PRO.CODPRO
AND E440IPC.CODDEP IN ('1','3','4','5','9')
AND E075PRO.CODPRO = :v_CodPro
AND E440IPC.CODDER = :v_CodDer
AND E090REP.USU_GRPREP = TO_NUMBER(:v_CodDep)
AND (E440NFC.TIPNFE = 3 OR E440NFC.TIPNFE = 2)
AND E440NFC.SITNFC = '2'
AND E440IPC.CODEMP = E001TNS.CODEMP
AND E440IPC.TNSPRO = E001TNS.CODTNS
AND E440NFC.USU_CODREP = E090REP.CODREP
AND E001TNS.CPRTCF = 'D';
IF (v_QtdDis < 0) THEN
v_QtdDis := 0;
END IF;
IF (:v_CodDep = '1') THEN
UPDATE E075PRO
SET USU_DEP1 = v_QtdDis,
USU_TRADP1 = v_TraDep,
USU_MINCCO = ((V_QtdFat - v_QtdDev)/90) * 20
WHERE CODEMP = :v_CodEmp
AND CODPRO = :v_CodPro;
END IF;
IF (:v_CodDep = '3') THEN
UPDATE E075PRO
SET USU_DEP3 = v_QtdDis,
USU_TRADP3 = v_TraDep,
USU_MINJOI = ((V_QtdFat - v_QtdDev)/90) * 20
WHERE CODEMP = :v_CodEmp
AND CODPRO = :v_CodPro;
END IF;
IF (:v_CodDep = '4') THEN
UPDATE E075PRO
SET USU_DEP4 = v_QtdDis,
USU_TRADP4 = v_TraDep,
USU_MINSJ = ((V_QtdFat - v_QtdDev)/90) * 20
WHERE CODEMP = :v_CodEmp
AND CODPRO = :v_CodPro;
END IF;
IF (:v_CodDep = '5') THEN
UPDATE E075PRO
SET USU_DEP5 = v_QtdDis,
USU_TRADP5 = v_TraDep,
USU_MINJDS = ((V_QtdFat - v_QtdDev)/90) * 20
WHERE CODEMP = :v_CodEmp
AND CODPRO = :v_CodPro;
END IF;
IF (:v_CodDep = '9') THEN
UPDATE E075PRO
SET USU_DEP9 = v_QtdDis,
USU_TRADP9 = v_TraDep,
USU_MINFLN = ((V_QtdFat - v_QtdDev)/90) * 20
WHERE CODEMP = :v_CodEmp
AND CODPRO = :v_CodPro;
END IF;
END IF;
END SPE210EST
它返回的错误:
1条答案
按热度按时间ffvjumwh1#
语法为:
如果没有参数且过程名为
SELECT <list of columns> INTO <list of variables> FROM ...
,则不需要在过程名后面加上()
大括号。