我使用dbaccess下面有一个存储过程:
CREATE PROCEDURE proc_1 (p_name VARCHAR(20),
p_usernum INTEGER)
RETURNING CHAR(7);
DEFINE err INTEGER;
ON EXCEPTION SET err
RETURN 'ERROR';
END EXCEPTION
ON EXCEPTION IN (150) SET err
RETURN 'NOTHING';
END EXCEPTION
INSERT INTO database1 (name, usernum,)
VALUES (p_name, p_usernum,);
IF DBINFO('sqlca.sqlerrd2') = 0
THEN RAISE EXCEPTION 150;
END IF;
RETURN 'YES';
END PROCEDURE;
.... 运行存储过程时出现错误-201。 第一个参数后面的下一行是否导致错误? 是否有正确的方法允许参数移动到存储过程中的下一行? 我想要做的是使用INSERT运行存储过程,如果INSERT也不成功则返回错误信息。
答案 0 :(得分:2)
我不知道它是否是错误的copy+paste
,但是在定义err
时你错过了类型,你在insert子句上有一些额外的逗号,而你&#39 ;重新返回截断值CHAR(5)
的{{1}}。试试这个:
NOTHING
不要使用例外150,你有一个自定义用于此(746):
CREATE PROCEDURE proc_1 (p_name VARCHAR(20), p_usernum INTEGER) RETURNING CHAR(7);
DEFINE err INTEGER;
ON EXCEPTION SET err
RETURN 'ERROR';
END EXCEPTION
ON EXCEPTION IN (746) SET err
RETURN 'NOTHING';
END EXCEPTION
INSERT INTO database1 (name, usernum)
VALUES (p_name, p_usernum);
IF DBINFO('sqlca.sqlerrd2') = 0
THEN RAISE EXCEPTION 746;
END IF;
RETURN 'YES';
END PROCEDURE;