无法减去 oracle 形式的变量值
Posted
技术标签:
【中文标题】无法减去 oracle 形式的变量值【英文标题】:Unable to minus the values of variable in oracle form 【发布时间】:2018-12-19 08:53:57 【问题描述】:我想减去变量中的数据值,但我的代码不起作用。
我的代码在下面
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 表单图片:
【问题讨论】:
错误在说什么? 很难调试“不工作”的错误信息。 没有错误,没有任何效果。 为什么需要一个 PL/SQL 块呢?从 REELS_TABLE 中选择重量 - :R_ID_1_W_CON 其中 R_ID = :R_ID_1_PLAIN;没有? 您对该区块有什么期望?它不输出任何东西,所以“没有任何效果”是意料之中的 【参考方案1】:首先,我假设字段: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;
【讨论】:
【参考方案2】:我在您的图片中看到您正在编写ON-INSERT
触发器。
在ON-INSERT
你应该添加一个插入语句。
我认为这就是它不起作用的原因。
您应该使用PRE-INSERT
触发器或WHEN-VALIDATE-ITEM
触发器来完成此类工作。
【讨论】:
以上是关于无法减去 oracle 形式的变量值的主要内容,如果未能解决你的问题,请参考以下文章