错误49错误的绑定变量Oracle表单

mys*_*lls 5 sql forms oracle variables bind

我想问这个错误...

   Error 49 at line 5, column 6
       bad bind variable 'S_ORD.payment_type'
Run Code Online (Sandbox Code Playgroud)

这是代码:

    DECLARE
     N NUMBER;
      v_credit S_CUSTOMER.credit_rating%type;
    BEGIN
      IF :S_ORD.payment_type = 'CREDIT' THEN
        SELECT credit_rating
        INTO v_credit
        FROM S_CUSTOMER
      WHERE :S_ORD.customer_id = id;
      IF v_credit NOT IN ('GOOD', 'EXCELLENT') THEN
            :S_ORD.payment_type:= 'CASH';
          n:=SHOW_ALERT('Payment_Type_Alert');
      END IF;
     END IF;
   END;
Run Code Online (Sandbox Code Playgroud)

我是oracle表单的新手,所以不确定我是否缺少设置。存在S_ORD表,并具有一列payment_type,该列由'CREDIT'和'CASH'值组成。谢谢。

APC*_*APC 0

显然,我们很难知道你做了什么,因为我们看不到你的代码,而且你没有给我们太多信息。所以这是一个猜测。

S_ORD 是表单中的一个块,基于(我希望)名为 S_ORD 的表。您发布的代码片段正在某个触发器中运行,可能是 POST-QUERY 或 WHEN-VALIDATE-ITEM,尽管这并不重要,并且应该填充该块上名为 PAYMENT_TYPE 的字段。

错误消息告诉您的是块 S_ORD 没有名为 PAYMENT_TYPE 的字段。(它说“绑定变量”,因为冒号表示法表示绑定变量,我们也可以以相同的方式引用诸如全局变量之类的东西)。

为什么该字段不存在?任何一个:

  1. 您的表有一个名为 PAYMENT_TYPE 的列,但您在创建块时尚未选择它;或者
  2. 您的表没有名为 PAYMENT_TYPE 的列;
  3. 您的数据块不称为 S_ORD。

在第一种情况下,您需要进入块属性编辑器并添加列。在第二种情况下,您需要将非基表项添加到您的块中。 在这里了解如何操作。如果您将数据块命名为表名以外的其他名称(并且这样做可能有充分的理由),那么您需要在调用中使用块名称,而不是表名称)。