如何操纵"如果条件"在ORACLE SQL PROCEDURE中?

时间:2017-02-25 08:12:09

标签: php oracle codeigniter

我正在使用ORACLE 10g& PHP codeigniter为我的应用程序。 我有一个这样定义的程序: -

CREATE OR REPLACE PROCEDURE 
        insertMovie (id IN NUMBER, title IN VARCHAR2, 
            sdate IN DATE, edate IN DATE,
                        image IN VARCHAR2, add_date IN DATE,
            message OUT NUMBER) 
    AS
        BEGIN
            INSERT INTO tbl_movie (movie_id, movie_title, movie_sdate, movie_edate, movie_image, movie_add_date) 
            VALUES ( id, 'title', to_date('sdate', 'yyyy-mm-dd hh24:mi:ss'), to_date('edate', 'yyyy-mm-dd hh24:mi:ss'), 'movie_image', to_date('add_date', 'yyyy-mm-dd hh24:mi:ss'));
            message:= 1;
        END;
/

现在,我希望if条件返回1或0.如果insert将成功,则消息将为1.如果insert失败。消息将为0。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用EXCEPTION块来捕获执行proc时发生的任何异常并将消息设置为0.

CREATE OR REPLACE PROCEDURE 
        insertMovie (id IN OUT NUMBER, title IN VARCHAR2, 
            sdate IN DATE, edate IN DATE,
                        image IN VARCHAR2, add_date IN DATE,
            message OUT NUMBER) 
    AS
        BEGIN
            IF ID is NULL THEN
               ID := SOME_SEQUENCE.NEXTVAL;
            END IF;
            INSERT INTO tbl_movie (movie_id, movie_title, movie_sdate, movie_edate, movie_image, movie_add_date) 
            VALUES ( id, 'title', to_date('sdate', 'yyyy-mm-dd hh24:mi:ss'), to_date('edate', 'yyyy-mm-dd hh24:mi:ss'), 'movie_image', to_date('add_date', 'yyyy-mm-dd hh24:mi:ss'));
            message := 1;
        EXCEPTION
          WHEN OTHERS THEN
            message := 0;
        END;
/