Oracle SQL错误PLS-00049:绑定变量错误';新的.NOOFCUSTOMERS';

Oracle SQL错误PLS-00049:绑定变量错误';新的.NOOFCUSTOMERS';,sql,oracle,oracle11g,oracle-sqldeveloper,Sql,Oracle,Oracle11g,Oracle Sqldeveloper,我必须创建一个触发器,将“NoOfCustomers”添加到存储表中。如果客户数量大于限制,则会显示错误消息。我在尝试运行触发器时遇到错误“坏绑定变量'NEW.NOOFCUSTOMERS'”,我似乎不知道为什么 CREATE OR REPLACE TRIGGER NoOfCustomersTrigger BEFORE INSERT ON STORE FOR EACH ROW DECLARE V_CAPACITY SHOPS.LIMIT%TYPE;

我必须创建一个触发器,将“NoOfCustomers”添加到存储表中。如果客户数量大于限制,则会显示错误消息。我在尝试运行触发器时遇到错误“坏绑定变量'NEW.NOOFCUSTOMERS'”,我似乎不知道为什么

CREATE OR REPLACE TRIGGER NoOfCustomersTrigger 
      BEFORE INSERT ON STORE
      FOR EACH ROW 
      DECLARE V_CAPACITY SHOPS.LIMIT%TYPE;
    BEGIN 
          SELECT LIMIT INTO V_LIMIT
          FROM SHOPS, SERVES
          WHERE CUSTID = SERVES.CUSTID AND STORENO = :NEW.STORENO;
          IF (:NEW.NOOFCUSTOMERS > V_LIMIT) THEN 
            RAISE_APPLICATION_ERROR (-20004,'The Number of Customers exceeds the LIMIT'); 
          END IF; 
        END; 

看起来你的代码中有一些错误

  • 在声明部分使用
    V_限制
    ,而不是在代码中使用
    V_容量
  • sql语句将抛出定义模糊的
    错误,列必须引用为TABLE.column\u NAME或TABLE\u ALIAS.column\u NAME 试着这样,

    CREATE OR REPLACE 
    TRIGGER noofcustomerstrigger 
          BEFORE INSERT ON STORE
          FOR EACH ROW 
    DECLARE v_limit shops.LIMIT%TYPE;
    BEGIN 
         SELECT LIMIT INTO v_limit
         FROM shops A, serves b
         WHERE A.custid = b.custid AND storeno = :NEW.storeno;
    
         IF (:NEW.noofcustomers > v_limit) THEN 
              raise_application_error (-20004,'The Number of Customers exceeds the LIMIT'); 
         END IF; 
    END;
    

    看起来你的代码中有一些错误

  • 在声明部分使用
    V_限制
    ,而不是在代码中使用
    V_容量
  • sql语句将抛出定义模糊的
    错误,列必须引用为TABLE.column\u NAME或TABLE\u ALIAS.column\u NAME 试着这样,

    CREATE OR REPLACE 
    TRIGGER noofcustomerstrigger 
          BEFORE INSERT ON STORE
          FOR EACH ROW 
    DECLARE v_limit shops.LIMIT%TYPE;
    BEGIN 
         SELECT LIMIT INTO v_limit
         FROM shops A, serves b
         WHERE A.custid = b.custid AND storeno = :NEW.storeno;
    
         IF (:NEW.noofcustomers > v_limit) THEN 
              raise_application_error (-20004,'The Number of Customers exceeds the LIMIT'); 
         END IF; 
    END;
    

    我刚刚意识到,我是否需要在其中创建NOOFCUSTOMERS?您是否在询问是否需要表中预先存在
    NOOFCUSTOMERS
    ?由于pl/SQL代码在编译时对表结构求值,所以答案是肯定的。是的,我一问就明白了。现在我有两个错误:1)PL/SQL:ORA-00918:column定义模糊2)PL/SQL:SQL语句ignoredORA-00918意味着两个表中都存在同名的列-在查询中为列添加前缀:
    tablename.columnname
    。我刚刚意识到,我是否需要在其中创建NOOFCUSTOMERS?您是否询问是否需要表中预先存在
    NOOFCUSTOMERS
    ?由于pl/SQL代码在编译时对表结构求值,所以答案是肯定的。是的,我一问就明白了。现在我有两个错误:1)PL/SQL:ORA-00918:column定义不明确2)PL/SQL:SQL语句ignoredORA-00918表示两个表中都存在同名的列-在查询中为列添加前缀:
    tablename.columnname