无法减去 oracle 形式的变量值
Unable to minus the values of variable in oracle form
我想减去变量中的数据值,但我的代码不起作用。
我的代码如下
DECLARE
REEL_W NUMBER;
BEGIN
SELECT WEIGHT
INTO REEL_W FROM REELS_TABLE
WHERE R_ID = :R_ID_1_PLAIN;
REEL_W := REEL_W - :R_ID_1_W_CON;
END;
这是我的 oracle 表格图片:
首先,我假设字段 :R_ID_1_W_CON
是数字,不是吗?您的问题可能与空值有关,所以最好使用 nvl()
函数。顺便说一句,由于带有 into
子句的 select
语句可能会引发异常,因此我们需要处理它们。
所以,考虑使用下面的一个:
DECLARE
REEL_W NUMBER;
BEGIN
SELECT nvl(WEIGHT,0)-nvl(:R_ID_1_W_CON,0)
INTO REEL_W
FROM REELS_TABLE
WHERE R_ID = :R_ID_1_PLAIN;
EXCEPTION WHEN NO_DATA_FOUND THEN REEL_W := 0;
END;
我在你的图片中看到你正在写一个 ON-INSERT
触发器。
在 ON-INSERT
中,您应该添加一个插入语句。
我想这就是它不起作用的原因。
您应该使用 PRE-INSERT
触发器或 WHEN-VALIDATE-ITEM
触发器来完成此类工作。
我想减去变量中的数据值,但我的代码不起作用。
我的代码如下
DECLARE
REEL_W NUMBER;
BEGIN
SELECT WEIGHT
INTO REEL_W FROM REELS_TABLE
WHERE R_ID = :R_ID_1_PLAIN;
REEL_W := REEL_W - :R_ID_1_W_CON;
END;
这是我的 oracle 表格图片:
首先,我假设字段 :R_ID_1_W_CON
是数字,不是吗?您的问题可能与空值有关,所以最好使用 nvl()
函数。顺便说一句,由于带有 into
子句的 select
语句可能会引发异常,因此我们需要处理它们。
所以,考虑使用下面的一个:
DECLARE
REEL_W NUMBER;
BEGIN
SELECT nvl(WEIGHT,0)-nvl(:R_ID_1_W_CON,0)
INTO REEL_W
FROM REELS_TABLE
WHERE R_ID = :R_ID_1_PLAIN;
EXCEPTION WHEN NO_DATA_FOUND THEN REEL_W := 0;
END;
我在你的图片中看到你正在写一个 ON-INSERT
触发器。
在 ON-INSERT
中,您应该添加一个插入语句。
我想这就是它不起作用的原因。
您应该使用 PRE-INSERT
触发器或 WHEN-VALIDATE-ITEM
触发器来完成此类工作。