2017-02-25 3 views
0

私のアプリケーションには、ORACLE 10g & PHP codeigniterを使用しています。 が、私はこのように定義された手順があります: - 挿入が失敗した場合、挿入が成功する場合の条件は、1または0を返すことがあれば、私はAが欲しい、今ORACLE SQL PROCEDUREで "if condition"を操作する方法は?

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

を、メッセージは1になります。メッセージは0になります。

どうすればいいですか?

答えて

0

あなたは、挿入が成功した場合、どのように私は最後に挿入movie_idを返すことができます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; 
/
+0

にPROCと設定されたメッセージを実行中に何らかの例外が発生したトラップにEXCEPTIONブロックを使用することができますか? – Saswat

+0

あなたはそのIDをprocに渡すだけです。したがって、メッセージが1であるかどうかを確認し、プロシージャに渡したIDを使用できます。 – GurV

+0

申し訳ありませんが、実際には私はこれを好きでした。ここで私はIDを明示的に渡しているので、私はそれを使うことができます。 sequence.next_valを使用していたらどうでしょうか?その時私はIDを返す必要があります。 – Saswat

関連する問題