oracle 查询时调用变量,Oracle在DML数据获取中使用变量?

我正在尝试以下操作:

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语句,但我需要修改数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值