我正在尝试以下操作:
SET SERVEROUTPUT ON;
DECLARE
V_COUNT NUMBER := 1;
V_LIITM NUMBER := 1;
V_LIMCU CHAR(12) := NULL;
V_LILOCN CHAR(20) := NULL;
V_LILOTN CHAR(30) := NULL;
BEGIN
-- INITIAL COUNT --
SELECT COUNT(*) INTO V_COUNT FROM QADTA.F41021
where exists (select IBGLPT FROM QADTA.F4102
where ibitm = liitm and ibmcu = LIMCU
and ibglpt <> liglpt AND (LIPBIN = 'P' OR LIPQOH != 0));
DBMS_OUTPUT.PUT_LINE('There are initially '||V_COUNT||' missing registries.');
-- GENERATING SEARCH VARIABLES --
SELECT LIITM, LIMCU, LILOCN, LILOTN, LIGLPT
INTO V_LIITM, V_LIMCU, V_LILOCN, V_LILOTN, V_LIGLPT
FROM QADTA.F41021 where exists (select IBGLPT FROM QADTA.F4102
where ibitm = liitm and ibmcu = LIMCU and ibglpt <> liglpt
AND (LIPBIN = 'P' OR LIPQOH != 0)) AND ROWNUM <= 1;
-- FIRST EXERCISE -- INSERT --
INSERT INTO QADTA.F41021_BACKOUT
SELECT LIITM, LIMCU, LILOCN, LILOTN, LIGLPT FROM QADTA.F41021
WHERE (LIITM, LIMCU, LILOCN, LILOTN)
IN (V_LIITM, V_LIMCU, V_LILOCN, V_LILOTN);
-- SECOND EXERCISE -- UPDATE --
UPDATE QADTA.F41021
SET F41021.LIGLPT = (SELECT IBGLPT FROM QADTA.F4102
WHERE IBITM = LIITM and IBMCU = LIMCU)
WHERE (LIITM, LIMCU, LILOCN, LILOTN)
IN (V_LIITM, V_LIMCU, V_LILOCN, V_LILOTN);
END;
但是,在执行时,我得到错误“00920-无效的关系运算符”。我取消了DML语句,但我需要修改数据。