【问题标题】:Package created with compilation error包创建时出现编译错误
【发布时间】:2017-02-26 13:23:14
【问题描述】:

我正在使用带有 PHP codeigniter 的 Oracle 10g 速成版。

我正在创建一个这样的包:-

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;
/

我收到警告:Package created with compilation error

但是当我像这样单独创建程序时:-

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;
/

我没有得到任何错误。程序保存得很好。

我做错了什么?

【问题讨论】:

    标签: php oracle codeigniter


    【解决方案1】:

    首先,您需要在包中定义过程,如下所示。我们只是在 PACKAGE 上定义它。正文部分转到 PACKAGE BODY。

    SQL> CREATE OR REPLACE PACKAGE currentMovie AS 
       PROCEDURE currentMovieList (cdate IN VARCHAR2, movieList OUT SYS_REFCURSOR); 
    END currentMovie; 
    /    
    
    Package created.
    

    那么你需要使用CREATE PACKAGE BODY 语句来创建一个存储包的主体。

    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.
    

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 2012-10-19
      • 2021-12-07
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2022-01-11
      相关资源
      最近更新 更多