Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ORA-04044:此处不允许使用过程、函数、包或类型_Sql_Oracle - Fatal编程技术网

Sql ORA-04044:此处不允许使用过程、函数、包或类型

Sql ORA-04044:此处不允许使用过程、函数、包或类型,sql,oracle,Sql,Oracle,我正在尝试做一个触发器,该触发器查询DB,以检查在允许交货之前是否已经订购了特定的产品。我不能换桌子。我发现错误:ORA-04044:此处不允许使用过程、函数、包或类型。我不明白这可能意味着什么。我必须检查交付中的条形码是否存在于表product中,以及命令中是否存在product numreference 该表如下: 命令 -------------------------------------------------------- NUMCOMMAND DATE CLIENTCO

我正在尝试做一个触发器,该触发器查询DB,以检查在允许交货之前是否已经订购了特定的产品。我不能换桌子。我发现错误:ORA-04044:此处不允许使用过程、函数、包或类型。我不明白这可能意味着什么。我必须检查交付中的条形码是否存在于表product中,以及命令中是否存在product numreference

该表如下:

命令

--------------------------------------------------------
NUMCOMMAND   DATE    CLIENTCODE NUMREFERENCE NUMBERITEMS
----------- -------- ---------- ------------ -----------
         53 20-11-21          2           10           5
产品

----------------------------------------------------------------------
 BARCODE   PRODUCTNUMBER        NUMREFERENCE   IDCLERK  STOCKQUANTITY
---------- -------------------- ------------ ---------- ---------------
         1 P001                            1          2              10
交付

----------------------------------------------------------------------------------
DELIVERIYNUMBER   DATE   CLIENTCODE NUMCOMMAND BARCODE  ID CLERK DELIVEREDQUANTITY
----------------  -----  ---------- ---------- -------  -------- -----------------
代码如下:

CREATE OR REPLACE TRIGGER productExist
BEFORE INSERT ON DELIVERY
FOR EACH ROW
DECLARE
  l_count       INTEGER;
BEGIN
  select count(*) 
    into l_count
    from C command, L delivery, P product
    where C.clientCode = :new.clientCode AND :new.barcode= P.barcode AND C.numreference = P.numreference;
  if l_count > 0 then
     DBMS_OUTPUT.PUT_LINE('Delivery accepted');
  ELSE
            RAISE_APPLICATION_ERROR(-20202, 'Delivery declined');  

  end if;
END; 

尝试写以下内容:

from command C, delivery L, product P

我认为表别名位于错误的位置。

一旦修复,传递中的每一行都会出现交叉连接-您根本不应该在触发器中引用它(执行时会出现变异表错误)。引用插入行的唯一方法是使用:new记录。