我正在使用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。
我该怎么做?
答案 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;
/