저는 오라클에 처음 왔으며 고주파에서 사용할 두 가지 기능이 있습니다. 그리고 나는 그들 사이에 어느 쪽이 더 좋은지 궁금해.함수에서 count (*) 대신에 예외를 사용해야합니까?
이 하나
FUNCTION GET_MY_MONEY (myType IN NUMBER) RETURN NUMBER AS
var_amount NUMBER;
var_result NUMBER;
BEGIN
var_result := 0;
var_amount := 0;
SELECT amount INTO var_amount FROM mytable WHERE type = myType AND sysdate >= date_from AND sysdate <= date_to;
var_result := var_amount*1000;
RETURN var_result;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
하거나 하나의 성능을 위해 더 나은
FUNCTION GET_MY_MONEY (myType IN NUMBER) RETURN NUMBER AS
var_count NUMBER;
var_amount NUMBER;
var_result NUMBER;
BEGIN
var_result := 0;
var_count := 0;
var_amount := 0;
SELECT count(*) INTO var_count FROM mytable WHERE type = myType AND sysdate >= date_from AND sysdate <= date_to;
IF (var_count > 0) THEN
SELECT amount INTO var_amount FROM mytable WHERE type = myType AND sysdate >= date_from AND sysdate <= date_to;
var_result := var_amount*1000;
RETURN var_result;
ELSE RETURN 0; END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
? 호출 될 때 더 빨리 복귀합니까?
미리 감사드립니다.
1 접근이 더 좋다. 왜냐하면 count (*)는 무거운 연산이므로 –
첫 번째 접근 방식을 사용합니다. 나는 당신이 사용 된 변수와 혼동하고 있다고 생각합니다. var_count는 처음에는 선언되지 않았고 두 번째에는 var_amount를 사용하지 않습니다. – Noel
오타 (誤字)가 잘못되었습니다. 귀하의 지적에 감사드립니다. – PhatHV