我写了一个简单的:
FUNCTION process_ResultsData_Incident22(varDate IN DATE, varErrData OUT VARCHAR2)
RETURN NUMBER IS num_Flg NUMBER;
BEGIN
varErrData := '123';
num_Flg := 1;
RAISE_APPLICATION_ERROR(001,'Execute_system... ');
RETURN num_Flg;
END;
在别的过程里调用这个方法时,varErrData就是传不出来值,怎么办?请高手指教!
FUNCTION process_ResultsData_Incident22(varDate IN DATE, varErrData OUT VARCHAR2)
RETURN NUMBER IS num_Flg NUMBER;
BEGIN
varErrData := '123';
num_Flg := 1;
RAISE_APPLICATION_ERROR(001,'Execute_system... ');
RETURN num_Flg;
END;
在别的过程里调用这个方法时,varErrData就是传不出来值,怎么办?请高手指教!
而且你的错误用001也不好。
FUNCTION process_ResultsData_Incident22(varDate IN DATE, varErrData OUT VARCHAR2)
RETURN NUMBER IS num_Flg NUMBER;
BEGIN
varErrData := '123';
num_Flg := 1;
--RAISE_APPLICATION_ERROR(001,'Execute_system... ');
RETURN num_Flg;
END;
比如: ERROR_NUMBER := '0001'; -- 4位或者5随你定
ERROR_MESSAGE := 'Sorry, that genius is not allowed.';varErrData := ERROR_NUMBER||' : '||ERROR_MESSAGE;返回varErrData最为函数返回值后再存储过程那里判断:varErrData IS NULL,如果不为空就 SUBSTR 解析出错误代码和错误号就好了.
最好error_number_in 之容许从 -20000 到 -20999 之间,这样就不会与 ORACLE 的任何错误代码发生冲突。RAISE_APPLICATION_ERROR(-20001, 'Sorry, that genius is not allowed.');
就可以了。