Oracle 스토리지 프로세스 호출(반환 매개변수)
6982 단어 oracle 저장 프로세스
CREATE OR REPLACE PROCEDURE test_in_out_exception (v_empno VARCHAR2,v_guess_sal NUMBER,v_true_sal OUT NUMBER)
AS
v_exits VARCHAR2 (20);
v_sal emp.sal%TYPE;
v_raise EXCEPTION;
BEGIN
SELECT COUNT (1)
INTO v_exits
FROM emp t
WHERE t.empno = v_empno;
IF (v_exits > 0)
THEN
SELECT t.sal
INTO v_sal
FROM emp t
WHERE t.empno = v_empno;
v_true_sal := v_sal;
IF (v_sal > v_guess_sal)
THEN
DBMS_OUTPUT.Put_line (' ');
ELSIF (v_sal < v_guess_sal)
THEN
DBMS_OUTPUT.Put_line (' ');
ELSIF (v_sal = v_guess_sal)
THEN
DBMS_OUTPUT.Put_line (' ');
END IF;
ELSE
RAISE v_raise;
END IF;
EXCEPTION
WHEN v_raise
THEN
RAISE_APPLICATION_ERROR (-20010, 'v_empno not exists!');
WHEN NO_DATA_FOUND
THEN
RAISE_APPLICATION_ERROR (-20011, 'ERROR: !');
WHEN OTHERS
THEN
ROLLBACK;
END;
Java 코드
try {
//
CallableStatement c = conn.prepareCall("{call test_in_out_exception(?,?,?)}");
//
c.setString(1, "7369");// 7369 800 736900
c.setInt(2, 24);
//
c.registerOutParameter(3, java.sql.Types.INTEGER);
//
c.execute();
//
System.out.println(c.getInt(3));
} catch (SQLException e) {
System.out.println("SQLState : " + e.getSQLState());
System.out.println("ErrorCode : " + e.getErrorCode());
System.out.println("Message : " + e.getMessage());
System.out.println("LocalizedMessage : " + e.getLocalizedMessage());
//e.printStackTrace();
} finally {
conn.close();
}
테이블은 데이터oracle의 scott 사용자 기본 테이블입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
oracle 저장 프로세스의 기본 문법1. 저장 프로세스의 구문 구조: CREATE OR REPLACE PROCEDURE 프로세스 이름 AS 성명 문장 단락; BEGIN 문장 세그먼트 실행하기; EXCEPTION 이상 처리 문장 단락; END; 2、SE...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.