2014-03-28 7 views
0

선언 된 함수 정의에서 select 쿼리의 where 절에 item_account_id 함수 매개 변수 값 을 사용하려고합니다.쿼리에서 함수 매개 변수를 참조하는 방법은 무엇입니까?

CREATE OR REPLACE 
FUNCTION UPDATE_CURRENT_BALANCE(item_account_id IN item_account.item_account_id%TYPE)        
RETURN boolean 
AS 
BEGIN   
    if item_data_table_id = 10 then 
     select current_balance_curr_id 
     from BANK_ACCOUNT 
     where item_account_id = item_account_id;   
    end if; 
    RETURN true; 
END UPDATE_CURRENT_BALANCE; 

답변

0

매개 변수 이름이 열과 동일하므로 범위 지정 문제가 있습니다. 오라클의 이름 확인 방법은 item_account_id = item_account_id 두 테이블 열을 식별합니다.

해결책은 간단합니다. 매개 변수의 이름을 변경하십시오. 접두어를 사용하면 인기 :

CREATE OR REPLACE FUNCTION UPDATE_CURRENT_BALANCE 
    (p_item_account_id IN item_account.item_account_id%TYPE) 
RETURN boolean 
AS 
BEGIN   
    if item_data_table_id = 10 then 
     select current_balance_curr_id 
     from BANK_ACCOUNT 
     where item_account_id = p_item_account_id;   
    end if; 
    RETURN true; 
END UPDATE_CURRENT_BALANCE; 

내가 item_data_table_id 가정은 전사에 열중하고 있었다 또 다른 매개 변수입니다. 접두어도 붙여야합니다. 일관성은 명명 규칙에서 좋은 점입니다.

+0

함수 실행이 IF-THEN 논리 블록 안에 들어가고 입력 매개 변수와 일치하는 것이 없으면이 함수는 'NO DATA FOUND'오류에서 오류가 발생합니다. 또한 다양한 입력 값 및 조건에 대한 함수의 응답을 강화해야합니다. –