【问题标题】:Unable to minus the values of variable in oracle form无法减去 oracle 形式的变量值
【发布时间】: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;没有?
  • 您对该区块有什么期望?它不输出任何东西,所以“没有任何效果”是意料之中的

标签: oracle plsql oracleforms


【解决方案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 触发器来完成此类工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多