有人能帮我把我的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
发布于 2014-10-23 17:40:03
您的标头和主体过程定义不匹配
在标题中,您有:
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参数来更新头部定义?
用于汇总的
film.title%type
)与基本类型(VARCHAR2
)混合匹配。二选一。发布于 2017-07-05 19:14:02
“子程序或游标'M115_EDIT‘在程序包规范中声明,必须在程序包体中定义”
我在处理project.the时遇到了这个错误,原因是主体中定义的过程中的参数名称与主体中相应的参数名称不匹配。
由于这种差异,我的market_code参数在主体中与定义为sub_market_code.error的规范相比有所不同。我将规范中的sub_market_code参数更改为market_code,以便它与主体匹配,这解决了上面提到的问题。
显然,在过程'r_date‘和'dur’的主体实现中提到的两个参数没有在specification.error中定义,这是由于主体和规范之间的差异。
发布于 2018-09-22 16:42:10
“正文中定义的过程中的参数名与正文中相应的参数名不匹配。”
https://stackoverflow.com/questions/26525204
复制相似问题