编译 Oracle 表单时出错(加载块 P5_27_MAR_201709_43_49 时 PDE-PSD001 无法解决对 <未知程序单元> 的引用)

Posted

技术标签:

【中文标题】编译 Oracle 表单时出错(加载块 P5_27_MAR_201709_43_49 时 PDE-PSD001 无法解决对 <未知程序单元> 的引用)【英文标题】:Error while Compiling Oracle Form (PDE-PSD001 Could Not Resolve Reference to <Unknown Program Unit> While Loading Block P5_27_MAR_201709_43_49) 【发布时间】:2021-09-11 12:57:43 【问题描述】:

我在编译 Oracle 表单时遇到错误。我正在使用带有 11g DB 版本的 Oracle Forms 版本 6i。我检查了所有对象,发现没有一个是无效的。问题在于 ON_CHECK_DELETE_MASTER 触发器,该触发器在创建主详细信息表单时自动创建。

我的触发代码是:

--
-- Begin default relation declare section
--
DECLARE
  Dummy_Define CHAR(1);
  --
  -- Begin PAYMENTS detail declare section
  --
  CURSOR PAYMENTS_cur IS      
    SELECT 1 FROM INT_PAYMENTS_V I     
    WHERE I.ORDER_ID = :ORDERS.ORDER_ID;
  --
  -- End PAYMENTS detail declare section
  --
  --
  -- Begin RETURNS detail declare section
  --
  CURSOR RETURNS_cur IS      
    SELECT 1 FROM INT_RETURNS_V I     
    WHERE I.ORDER_ID = :ORDERS.ORDER_ID;
  --
  -- End RETURNS detail declare section
  --
  --
  -- Begin ADJUSTMENTS detail declare section
  --
  CURSOR ADJUSTMENTS_cur IS      
    SELECT 1 FROM INT_ORDER_ADJUSTMENTS_V I     
    WHERE I.ORDER_ID = :ORDERS.ORDER_ID;
  --
  -- End ADJUSTMENTS detail declare section
  --
--
-- End default relation declare section
--
--
-- Begin default relation program section
--
BEGIN
  --
  -- Begin PAYMENTS detail program section
  --
  OPEN PAYMENTS_cur;     
  FETCH PAYMENTS_cur INTO Dummy_Define;     
  IF ( PAYMENTS_cur%found ) THEN     
    Message('Cannot delete master record when matching detail records exist.');     
    CLOSE PAYMENTS_cur;     
    RAISE Form_Trigger_Failure;     
  END IF;
  CLOSE PAYMENTS_cur;
  --
  -- End PAYMENTS detail program section
  --
  --
  -- Begin RETURNS detail program section
  --
  OPEN RETURNS_cur;     
  FETCH RETURNS_cur INTO Dummy_Define;     
  IF ( RETURNS_cur%found ) THEN     
    Message('Cannot delete master record when matching detail records exist.');     
    CLOSE RETURNS_cur;     
    RAISE Form_Trigger_Failure;     
  END IF;
  CLOSE RETURNS_cur;
  --
  -- End RETURNS detail program section
  --
  --
  -- Begin ADJUSTMENTS detail program section
  --
  OPEN ADJUSTMENTS_cur;     
  FETCH ADJUSTMENTS_cur INTO Dummy_Define;     
  IF ( ADJUSTMENTS_cur%found ) THEN     
    Message('Cannot delete master record when matching detail records exist.');     
    CLOSE ADJUSTMENTS_cur;     
    RAISE Form_Trigger_Failure;     
  END IF;
  CLOSE ADJUSTMENTS_cur;
  --
  -- End ADJUSTMENTS detail program section
  --
END;
--
-- End default relation program section
--

错误:(PDE-PSD001 无法解析对加载块 P5_27_MAR_201709_43_49 时的引用)

寻求建议。

【问题讨论】:

【参考方案1】:

我相信您一定看过以下说明:

在更改 DB 对象 (Doc ID 1986731.1) 后,无法针对 12c 数据库 (DB) 编译表单模块(例如 fmb、mmb、pll)

【讨论】:

感谢您的回复。我在同一版本的数据库上编译表单,而您共享的文档 ID 用于不同版本的数据库,即表单是在 11g 数据库上创建并在 12c 上编译的,这会引发此错误。虽然我在 11g 上这样做。您能提出一些解决方法或解决方案吗?

以上是关于编译 Oracle 表单时出错(加载块 P5_27_MAR_201709_43_49 时 PDE-PSD001 无法解决对 <未知程序单元> 的引用)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Forms 10g 自动查询

在 Oracle SQL 的功能块中声明数字变量时出错

使用 p5 将音频从客户端上传到服务器时出错

尝试在 AIX 中动态加载 Oracle 客户端库时出错

Oracle 导入DMP 出错

Oracle 导入DMP 出错