Reputation: 12836
I am using Oracle 10g express edition with PHP codeigniter.
I am creating a package like this:-
CREATE OR REPLACE PACKAGE currentMovie
IS
PROCEDURE
currentMovieList (cdate IN VARCHAR2, movieList OUT SYS_REFCURSOR)
IS
BEGIN
OPEN movieList FOR
SELECT * FROM tbl_movie, tbl_language WHERE tbl_movie.language_id = tbl_language.language_id AND TO_DATE(cdate, 'YYYY-MM-DD hh24:mi:ss') BETWEEN movie_sdate AND movie_edate;
END currentMovieList
END currentMovie;
/
I am getting a warning: Package created with compilation error
But when I am crating the procedure separately like this:-
CREATE OR REPLACE PROCEDURE
currentMovieList (cdate IN VARCHAR2, movieList OUT SYS_REFCURSOR)
IS
BEGIN
OPEN movieList FOR
SELECT * FROM tbl_movie, tbl_language WHERE tbl_movie.language_id = tbl_language.language_id AND TO_DATE(cdate, 'YYYY-MM-DD hh24:mi:ss') BETWEEN movie_sdate AND movie_edate;
END;
/
I am getting no error. The procedure is getting saved fine.
What am I doing wrong?
Upvotes: 0
Views: 1166
Reputation: 3351
First you need to define the procedure in a package as shown below. We just define it on the PACKAGE. The body part goes to PACKAGE BODY.
SQL> CREATE OR REPLACE PACKAGE currentMovie AS
PROCEDURE currentMovieList (cdate IN VARCHAR2, movieList OUT SYS_REFCURSOR);
END currentMovie;
/
Package created.
Then you need to use CREATE PACKAGE BODY
statement to create the body of a stored package.
SQL> CREATE OR REPLACE PACKAGE BODY currentMovie
IS
PROCEDURE
currentMovieList (cdate IN VARCHAR2, movieList OUT SYS_REFCURSOR)
IS
BEGIN
OPEN movieList FOR
SELECT * FROM tbl_movie, tbl_language WHERE tbl_movie.language_id = tbl_language.language_id AND TO_DATE(cdate, 'YYYY-MM-DD hh24:mi:ss') BETWEEN movie_sdate AND movie_edate;
END currentMovieList;
END currentMovie;
/
Package body created.
Upvotes: 2