반응형
PL/SQL 스크립트 내부의 로컬 함수
Oracle 10 SQL Developer에서 이 코드를 실행하려고 합니다.
FUNCTION is_valid_date (p_val in VARCHAR2, p_format IN VARCHAR2 )
RETURN numeric IS
l_date VARCHAR2(100);
BEGIN
l_date := TO_date( p_val, p_format );
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END is_valid_date;
BEGIN
DBMS_OUTPUT.PUT_LINE(is_valid_date('20120101', 'YYYYMMDD' ));
END;
하지만 특정 Oracle 코드가 없는 일반적인 오류가 발생합니다. 마치 구문 문제인 것처럼 말입니다.
날짜가 유효한지 확인해야 하며, Oracle 내장 기능이 없기 때문에 스크립트 내에서 정의했습니다(글로벌 또는 어딘가에 저장하지 않음).
편집:
저는 오라클 포럼에서 함수가 아닌 오라클 regexp를 사용하여 솔루션을 찾았습니다.내 스크립트는 다음과 같습니다.
BEGIN
select * from mytable where not REGEXP_LIKE(mydatefield, '(((0[1-9]|[12]\d|3[01])\.(0[13578]|1[02])\.((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\.(0[13456789]|1[012])\.((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\.02\.((19|[2-9]\d)\d{2}))|(29\.02\.((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))')
END;
여기서 내 날짜 필드는 DD.MM 형식입니다.YYYY
만약 그것이 당신의 전체 스크립트라면, 당신은 익명 블록의 시작 부분에 있는 키워드를 놓치고 있는 것입니다.
DECLARE
FUNCTION is_valid_date (p_val in VARCHAR2, p_format IN VARCHAR2 )
RETURN numeric IS
l_date VARCHAR2(100);
BEGIN
l_date := TO_date( p_val, p_format );
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END is_valid_date;
BEGIN
DBMS_OUTPUT.PUT_LINE(is_valid_date('20120101', 'YYYYMMDD' ));
END;
/
anonymous block completed
1
그렇지 않으면 다음과 같은 일련의 오류가 발생합니다.
Error starting at line : 1 in command -
FUNCTION is_valid_date (p_val in VARCHAR2, p_format IN VARCHAR2 )
Error report -
Unknown Command
당신이 언급한 '일반적인 오류'라고 생각합니다.
언급URL : https://stackoverflow.com/questions/21856832/local-function-inside-pl-sql-script
반응형
'programing' 카테고리의 다른 글
Git - 병합하는 동안 파일 무시 (0) | 2023.07.03 |
---|---|
이 ">>=" 연산자는 C에서 무엇을 의미합니까? (0) | 2023.07.03 |
루비 문자열 내에서 문자열 "\n"을 제거하려면 어떻게 해야 합니까? (0) | 2023.06.28 |
피벗에서 (null) 값을 출력 0으로 바꾸는 방법 (0) | 2023.06.28 |
Firebase에서 특정 사용자 삭제 (0) | 2023.06.28 |