当前位置: 首页 > 面试题库 >

Oracle错误PLS-00323:子程序或游标在程序包规范中声明,并且必须在程序包主体中定义

鲁羽
2023-03-14
问题内容

有人可以帮我把我的pl / sql过程放在一个包中吗?我已经尝试过并且正在努力:

这是我的包裹规格说明:

CREATE OR REPLACE PACKAGE film_pkg
IS
title VARCHAR2(100);
PROCEDURE get_films(fname VARCHAR2);
END film_pkg;

--

这是我遇到问题的程序包主体:

  CREATE OR REPLACE PACKAGE BODY film_pkg
IS
   PROCEDURE get_films (fname    IN     film.title%TYPE,
                        r_date      OUT film.release_date%TYPE,
                        dur         OUT film.duration%TYPE)
   AS
   BEGIN
      SELECT release_date, duration
        INTO r_date, dur
        FROM FILM
       WHERE title = fname;
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         r_date := '';
         dur := '';
   END get_films;
END film_pkg;

如果有人可以帮助我修复错误,我将不胜感激:

Error(4,11): PLS-00323: subprogram or cursor 'GET_FILMS' is declared in a package specification and must be defined in the package body

问题答案:

您的标头和正文过程定义不匹配

在标题中,您具有:

PROCEDURE get_films(fname VARCHAR2);

而在体内:

PROCEDURE get_films(fname IN film.title%type, 
   r_date OUT film.release_date%type, dur OUT film.duration%type)

您可能只需要使用另外两个OUT参数来更新标头定义?

总结

  • 确保标头定义与主体实现的所有参数匹配(参数数量,参数名称,参数顺序和参数类型)
  • 根据Alex的评论,请勿将自定义类型(film.title%type)与基本类型(VARCHAR2)混合和匹配。选择一个或另一个。


 类似资料:
  • 所以我一直有这个错误,我不知道发生了什么。我在谷歌上搜索了一下,读了一些关于这个错误的问题,但什么都没用。我只想运行它,这样我就可以完成我的项目。 错误:开始低库存;结束;*第1行错误:ORA-06550:第1行,第9列:PLS-00201:标识符“LOWINVENTORY”必须声明ORA-06550:第1行,第7列:PL/SQL:忽略语句 编辑: 表创建:

  • 作为标题,我正在Oracle上编写一些存储过程,首先我检查了版本 有结果 ... 并尝试NVL2与常规SQL查询 结果似乎是对的 ... 所以我确认11g确实支持NLV2功能,我现在可以开始编写我的存储过程,如下所示: Oracle告诉我它编译有错误,即 PLS-00201:必须声明标识符“NVL2” 为什么函数在常规查询中工作,但在存储过程中变得未声明?

  • 安装在CentOS 8上。 已尝试两者 Oracle Database Express Edition (XE) 企业版 从这里 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html ords.warhttps://www.oracle.com/database/technologi

  • 我正在使用SODA for Java存储和检索Oracle12c DB中的文档。我正在效仿这个例子。 这一例外背后的原因将是什么?

  • 问题内容: 我需要在Java Swing应用程序中使用自定义字体(ttf)。如何将它们添加到包装中并使用它们? 同时,我只是将它们安装在Windows中然后使用它们,但是我不希望应用程序的使用如此复杂,告诉用户在使用我的应用程序之前安装字体不是很方便。 问题答案: 您可以通过加载它们: 此加载的字体没有预定义的字体设置,因此要使用该字体,您必须这样做: 看到: 物理和逻辑字体