oracle 原因:由于 ORA-06550,FDPSTP 失败:第 1 行,第 7 列:PLS-00221:不是过程或未定义

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11802076/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 01:01:20  来源:igfitidea点击:

Cause: FDPSTP failed due to ORA-06550: line 1, column 7:PLS-00221: is not a procedure or is undefined

oracleplsql

提问by AmericanSuave

I'm trying to run a concurrent request in APPS but i keep getting this error

我正在尝试在 APPS 中运行并发请求,但我不断收到此错误

(Cause: FDPSTP failed due to ORA-06550: line 1, column 7:
PLS-00221: 'XXINV_ITEM_ORACLE_E5B0' is not a procedure or is undefined
ORA-06550: line 1, column 7:  
PL/SQL: Statement ignored)

and heres my package body its just a simple insert.

继承人我的包裹体它只是一个简单的插入。

CREATE OR REPLACE PACKAGE BODY  APPS.XXINV_ITEM_ORACLE_E5B0 IS
PROCEDURE  inv_com_proc (
      o_chr_errbuf     OUT      VARCHAR2,
      o_num_retcode    OUT      NUMBER
  )
AS
  begin
  EXECUTE IMMEDIATE 'TRUNCATE TABLE  XXINV.XXINV_ITEM_ORACLE_E5B0';
  Insert into XXINV.XXINV_ITEM_ORACLE_E5B0(ORGANIZATION_CODE ,
  ITEM_NUM, 
  ON_HAND_QUANTITY ,
  ITEM_TYPE ,
  STATUS ,
  MATERIAL_COST ,
  MATERIAL_OVERHEAD_COST,
  RESOURCE_COST,
  OVERHEAD_COST,
  OUTSIDE_PROCESSING_COST,
  SUBINVENTORY_CODE ,
  LOCATORS )
  select OWNING_ORG_CODE, ITEM_NUMBER, ON_HAND_QUANTITY, ITEM_TYPE, STATUS, MATERIAL_COST ,
  MATERIAL_OVERHEAD_COST,
  RESOURCE_COST,
  OVERHEAD_COST,
  OUTSIDE_PROCESSING_COST,
  SUBINVENTORY_CODE ,
  LOCATOR
  from apps.XXRPT_INV_VALUATION_D535_V
  where apps.XXRPT_INV_VALUATION_D535_V.SUBINVENTORY_CODE = 'FG' AND apps.XXRPT_INV_VALUATION_D535_V.STATUS = 'ONHAND';
  COMMIT;
  END;

end XXINV_ITEM_ORACLE_E5B0;

回答by Wolf

When you define the Concurrent Program Executable in System Administration, make sure you the Execution File Nameincludes the schema.package.procedure, as in APPS.XXINV_ITEM_ORACLE_E5B0.inv_com_proc(no parenthesis).

在系统管理中定义并发程序可执行文件时,请确保执行文件名包含schema.package.procedure, 如APPS.XXINV_ITEM_ORACLE_E5B0.inv_com_proc(无括号)。

回答by DCookie

It seems you're trying to execute the package itself - that won't work. You must execute a procedure/function within the package:

看来您正在尝试执行包本身 - 这行不通。您必须在包中执行一个过程/函数:

DECLARE
  o_chr_errbuf  VARCHAR2(256);
  o_num_retcode NUMBER;
BEGIN 
  APPS.XXINV_ITEM_ORACLE_E5B0.inv_com_proc ( o_chr_errbuf, o_num_retcode);
END;
/

A simple test:

一个简单的测试:

DECLARE
  err VARCHAR2(256);
  CODE NUMBER;
BEGIN xx(err, CODE); END;

ORA-06550: line 5, column 7:
PLS-00221: 'XX' is not a procedure or is undefined
ORA-06550: line 5, column 7:
PL/SQL: Statement ignored
SQL> SELECT * FROM a;

                                     ID
---------------------------------------
SQL> DECLARE
  2    err VARCHAR2(256);
  3    CODE NUMBER;
  4  BEGIN
  5    xx.tst(err, CODE);
  6  END;
  7  /

PL/SQL procedure successfully completed
SQL> SELECT * FROM a;

                                     ID
---------------------------------------
                                      1