Java调用Oracle存储过程,应该要有花括号“{}”,这样SP内部执行有异常抛出时,Java端才可以在execute时马上catch到异常,而不用要等到获取游标时才抛出游标关闭异常。代码:
SP:
CREATE OR REPLACE PROCEDURE SP_EXCEPTION_TEST(V_PARAM IN VARCHAR2,
CUR OUT SYS_REFCURSOR)
AS
V_A VARCHAR2(10);
BEGIN
--make exception occur
SELECT A.B INTO V_A FROM ZENG_TEST_T A WHERE A.A = V_PARAM AND ROWNUM = 1;
OPEN CUR FOR
SELECT * FROM ZENG_TEST_T A;
END;
package spTest;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import oracle.jdbc.OracleTypes;
import spM