Oracle错误PLS-00323:子程序或游标在程序包规范中声明,并且必须在程序包
技术问答
241 人阅读
|
0 人回复
|
2023-09-14
|
有人可以帮我把我的pl / sql过程放在一个包中吗?我已经尝试过并且正在努力:
u, s0 W' v& j这是我的包裹规格说明:
7 x% H; I. E+ Z/ j" mCREATE OR REPLACE PACKAGE film_pkg* Y, o( c* ^% m* p+ W! ]
IS
: H; u$ g1 F. l: gtitle VARCHAR2(100);4 F+ j$ g* l9 P1 h
PROCEDURE get_films(fname VARCHAR2);3 U; d4 }$ J E, m0 E0 I* T% Y
END film_pkg;+ I1 l. j* g# l' x& X
--
' P* R9 X: J0 m) z( g这是我遇到问题的程序包主体:! d: v8 O! q- I
CREATE OR REPLACE PACKAGE BODY film_pkg
4 M; V* |8 G0 Z3 oIS4 @' @3 S2 ` h+ m
PROCEDURE get_films (fname IN film.title%TYPE,
* p' M4 j0 y" N- u& Y) C6 E& [1 h r_date OUT film.release_date%TYPE,
: m( v7 g( e* v" m" g dur OUT film.duration%TYPE)
w; {0 t8 W6 q AS, A$ t/ O, U( {. F% x
BEGIN2 `/ {9 [( ]0 p
SELECT release_date, duration( k3 {( T7 M s* Y5 C* \8 d
INTO r_date, dur1 Y) R3 ]$ `& U0 z$ {# s
FROM FILM: p* p: J# ^& ^0 K8 q$ X6 R
WHERE title = fname;6 g/ y3 L1 C4 S0 o
EXCEPTION
+ M: Y, Y8 G" A* E0 @# C4 G( P WHEN NO_DATA_FOUND
: l8 }3 G" Y! v! {5 X* l& r: P. B THEN
* W3 t8 ]1 v2 K* d r_date := '';/ r* t* f' W/ d1 _: j# \5 v# T
dur := '';
8 r, b' \$ E. K END get_films;
1 z: P: c3 f" L" SEND film_pkg;4 R7 W. s8 t3 _0 J. {
如果有人可以帮助我修复错误,我将不胜感激:
0 p* N1 N5 ^ W5 ]Error(4,11): PLS-00323: subprogram or cursor 'GET_FILMS' is declared in a package specification and must be defined in the package body9 T: D0 x5 G5 G( F! G
- J0 _; @ C F6 \, h2 ?解决方案:$ F* g% c' l& v# a% T- _2 _
+ e* F4 B2 y" H; ^) E" M) d* S$ u; A0 m$ I/ `- o% Q, G) s4 Y' j
" [+ X& ] m1 q4 M: s, g
您的标头和正文过程定义不匹配+ ?8 v% c! }$ s/ n3 U1 ^8 i- o
在标题中,您具有:
! f9 R1 g; A- ]0 J9 T! A' F h+ MPROCEDURE get_films(fname VARCHAR2); @1 \+ o* M. W U, G( o2 J4 ~ q
而在体内:, c) x" {, h' M
PROCEDURE get_films(fname IN film.title%type,
: {2 Z7 |0 z$ h$ N3 D6 F; g; U r_date OUT film.release_date%type, dur OUT film.duration%type)7 [8 {1 X ?; F& |" R
您可能只需要使用另外两个OUT参数来更新标头定义?$ T: g2 q/ @7 l- K; i
总结5 I) i; J l& Q2 p8 G2 x
确保标头定义与主体实现的所有参数匹配(参数数量,参数名称,参数顺序和参数类型)
9 F4 i, q0 u; H) {根据Alex的评论,请勿将自定义类型(film.title%type)与基本类型(VARCHAR2)混合和匹配。选择一个或另一个。0 ^9 W1 n9 V5 ?' n& L
|
|
|
|
|
|