oracle if 예제

검색된 CASE 식에서 Oracle은 true 조건의 발생을 찾을 때까지 왼쪽에서 오른쪽으로 검색한 다음 return_expr을 반환합니다. 조건이 true로 발견되지 않고 ELSE 절이 있는 경우 Oracle은 else_expr을 반환합니다. 그렇지 않으면 오라클은 null을 반환합니다. 상호 배타적인 두 작업 중에서 선택하려고 할 때 IF-THEN-ELSE 구문 생성을 사용해야 합니다. 다음 예제를 고려하십시오: 원래 예제에서 변수 v_day는 RTRIM(TO_CHAR(v_date, DAY`)의 도움으로 계산됩니다. 첫째, TO_CHAR 함수는 공백으로 패딩처리된 요일을 반환합니다. TO_CHAR 함수에서 검색한 값의 크기는 항상 9바이트입니다. 다음으로 RTRIM 함수는 후행 공백을 제거합니다. 다음 예제를 살펴보겠습니다. 두 개의 숫자 값이 변수 v_num1 및 v_num2에 저장됩니다.

작은 값이 항상 v_num1에 저장되고 더 큰 값이 항상 v_num2에 저장되도록 값을 정렬해야 합니다. 이 예제에서 조건 v_num1 > v_num2는 5가 3보다 크므로 TRUE로 평가합니다. 그런 다음 3이 v_num1에 할당되고 5가 v_num2에 할당되도록 값이 다시 정렬됩니다. 이 작업은 임시 저장소에 사용되는 세 번째 변수 v_temp의 도움으로 수행됩니다. 간단한 CASE 식에서 오라클 데이터베이스는 첫 번째 WHEN을 검색합니다. 그런 다음 expr이 비교_expr과 같고 return_expr을 반환하는 쌍을 이수합니다. WHEN 중 어느 것도 없는 경우 … 그런 다음 쌍이 이 조건을 충족하고 ELSE 절이 존재한 다음 Oracle은 else_expr을 반환합니다.

그렇지 않으면 오라클은 null을 반환합니다. 모든 return_expr 및 else_expr에 대해 리터럴 NULL을 지정할 수 없습니다. 다음 예제에서는 판매 수익이 200,000보다 큰 경우 판매 수수료를 10%로 설정합니다. 그렇지 않으면 판매 수수료가 5%로 설정됩니다. 오라클 데이터베이스는 단락 평가를 사용합니다. 즉, 간단한 CASE 식의 경우 데이터베이스는 expr과 비교하기 전에 모든 비교_expr 값을 평가하는 대신 expr과 비교하기 전에 각 비교_expr 값을 평가합니다. 따라서 오라클은 이전 비교_expr이 expr과 동일한 경우 비교_expr을 평가하지 않습니다. 검색된 CASE 식의 경우 데이터베이스는 각 조건을 평가하여 true인지 여부를 확인하고 이전 조건이 true인 경우 조건을 평가하지 않습니다. 간단한 CASE 식의 경우 expr 및 모든 비교_expr 값은 동일한 데이터 형식(CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2, NUMBER, BINARY_FLOAT 또는 BINARY_DOUBLE)을 갖거나 모두 숫자 데이터 형식이 있어야 합니다. 모든 식에 숫자 데이터 형식이 있는 경우 Oracle은 가장 높은 숫자 우선 순위로 인수를 결정하고 나머지 인수를 해당 데이터 유형으로 암시적으로 변환하고 해당 데이터 형식을 반환합니다. 아래 예제에서는 여러 IF 문이 사용됩니다.

Oracle에서 IF-THEN-ELSE 문은 조건이 TRUE일 때 코드를 실행하거나 조건이 FALSE로 평가되는 경우 다른 코드를 실행하는 데 사용됩니다. 다음은 Oracle 함수에서 IF-THEN-ELSE 문을 사용하는 예제입니다. 위의 예에서 SQL*Plus 변수가 익명 블록으로 전달됩니다(SQL*Plus 명령 `확인 해제`로 확인이 해제되었는지 확인).