无法减去 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 形式的变量值的主要内容,如果未能解决你的问题,请参考以下文章

根据附加的变量值,绑定类似乎无法正常工作

如何在Visual Studio中检查函数末尾的变量值

IE7下iframe无法使用window.parent获取父元素中的变量值

Xcode 调试器显示不正确的变量值

为啥我的变量值在 Swift 中恢复?

序列是如何拼接的,为啥我的变量值是文档节点?