oracle 저장 프로세스 이상 처리 및 시간 스탬프 변수 형식
다음은 간단한 저장 프로세스 코드 세그먼트를 통해 문제를 설명합니다.
CREATE OR REPLACE PROCEDURE load_error IS
V_td1 test1.td1%TYPE;
v_td1xh test1.td1xh%TYPE;
v_gxsj timestamp ; --
v_zhxgsj timestamp ;
V_COUNT NUMBER ; -- , 2 ,
V_STR VARCHAR(100) ; --
v_errorCode load_ajxx_error.errorcode%TYPE ;
v_errorText load_ajxx_error.errortext%TYPE ;
v_errorline load_ajxx_error.errorline%TYPE ;
-- ( )
TYPE CURSOR_TYPE IS REF CURSOR;
CURSOR_DYNAMIC CURSOR_TYPE;
CURSOR test2_CURSOR IS
SELECT td2xh,td21,td22,td23,td24 FROM test2 ;
BEGIN
--
FOR test2_RECORD IN test2_CURSOR LOOP
BEGIN
v_td1xh := test2_RECORD.td2xh ;
V_td1 := test2_RECORD.td21 ; --
--dbms_output.put_line(v_zhxgsj || ',' || v_gxsj) ;
--
EXCEPTION
WHEN OTHERS THEN
v_errorcode := SQLCODE ; --
v_errorText := Sqlerrm ; --
v_errorline := dbms_utility.format_error_backtrace() ; -- ( oracle 10g )
INSERT INTO load_ajxx_error(xh,errorline, errorcode, errortext, tbsj) VALUES(v_td1xh,v_errorline,v_errorcode,v_errorText,SYSDATE) ;
END ;
COMMIT;
END LOOP ;
END load_error;
1. 타임 스탬프 변경 설명:
저장 프로세스로 데이터를 유도할 때, 일반적으로 시간 필드 (시간 스탬프) 로 업데이트가 필요한지 판단해야 한다.그러나oracle에서 저장 프로세스의 변수를DATE로 정의하면oracle은 자동으로 데이터 테이블의 시간 필드를 날짜형으로 변환하여 시간 정보를 캡처합니다.그러나 우리가 가져올 데이터는 하루에 여러 번 업데이트될 수 있고 실시간 요구가 높기 때문에 초까지 정확해야 한다.이때oracle의timestamp 변수를 사용했는데 이 변수가 발생하는 값은 15-3월-1412.31.59.000000 오전입니다. 이 날짜는 우리가 사용하기에 충분합니다.
2. oarcle 예외 처리 설명:
저장 프로세스를 사용하여 데이터를 유도할 때 이상 처리는 반드시 없어서는 안 된다. 왜냐하면 우리는 어떤 조작에서 오류가 발생하여 데이터가 정확하게 삽입되지 않았는지 알아야 하기 때문이다.만약에 어떤 데이터에 문제가 생겼을 뿐이라면 우리는 문제가 없는 다른 데이터를 계속 처리해야 한다. 모든 데이터가 처리된 후에 우리는 로그표에 가서 도대체 어떤 데이터에 문제가 생겼는지, 어떤 문제가 생겼는지, 그리고 문제를 해결한 데이터를 분석해야 한다.
구체적으로 다음과 같습니다.
일반적으로 우리는 커서로 한 조의 데이터를 처리해야 하기 때문에 우리는 커서의 순환체에 코드 블록을 추가하여 전체 커서 주기에 발생할 수 있는 문제를 처리해야 한다.
BEGIN
--
FOR test2_RECORD IN test2_CURSOR LOOP
BEGIN
v_td1xh := test2_RECORD.td2xh ;
V_td1 := test2_RECORD.td21 ; --
--dbms_output.put_line(v_zhxgsj || ',' || v_gxsj) ;
--
EXCEPTION
WHEN OTHERS THEN
v_errorcode := SQLCODE ; --
v_errorText := Sqlerrm ; --
v_errorline := dbms_utility.format_error_backtrace() ; -- ( oracle 10g )
INSERT INTO load_ajxx_error(xh,errorline, errorcode, errortext, tbsj) VALUES(v_td1xh,v_errorline,v_errorcode,v_errorText,SYSDATE) ;
END ;
COMMIT;
END LOOP ;
END ;
FOR 순환 중인 begin...exception ... end ;반드시 없어서는 안 될 것이다.
SQLCODE:oracle의 키워드는 오류 코드입니다.
SQLERRM:oracle의 키워드는 잘못된 설명을 의미합니다.때로는 길어질 수도 있으니substr로 캡처해 보세요.보통 200위 안에 들면 돼요. 간단한 정보만 알면 돼요.
dbms_utility.format_error_backtrace (): 오류가 발생한 줄을 찾기 위해oracle 10g에 도입된 함수입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception Class에서 에러 코드 해석 ~초기초편~직장에서 C# 프로젝트가 내뿜는 오류 코드를 구문 분석하고 오류의 위치를 확인하기 위해 Exception class를 활용할 수 있었습니다. 지금까지 Exception Class 에 대해서 별로 파악할 수 없었기 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.