2014-04-17 3 views
1

의 내부 저장 프로 시저를 호출 할 수 없습니다 나는이 절차를 가지고 :다른 절차

PROCEDURE insert_change_history(
    client_number_l   history.client_number%TYPE, 
    change_date_l    history.change_date%TYPE, 
    field_name_l    history.field_name%TYPE, 
    new_value_l    history.new_value%TYPE, 
    action_performer_l  history.action_performer%TYPE 

) AS 

    old_value_l    history.old_value%TYPE; 

    BEGIN 

    SELECT new_value into old_value_l from history; 

    IF old_value_l = new_value_l THEN CALL load_client_numbers(); 

    END IF 

END insert_change_history; 

당신은 내가 if 문 내부 load_client_numbers()를 호출하기 위해 노력하고있어,하지만이 작동하지 않습니다 볼 수 있듯이.

다음
Error(4017,44): PLS-00103: Encountered the symbol "LOAD_CLIENT_NUMBERS" when expecting one of the following:  := . (@ % ; The symbol ":=" was substituted for "LOAD_CLIENT_NUMBERS" to continue. 
Error(4022,1): PLS-00103: Encountered the symbol "END" when expecting one of the following:  ; The symbol ";" was substituted for "END" to continue. 

load_client_numbers()입니다 :

PROCEDURE load_client_numbers(
result_o     OUT CLOB 
) AS 
    l_data          hub_cursor; 

    number_l   plan.client_number%TYPE; 
    name_l    details.client_name%TYPE; 

    l_jsonArray   json_list; 
    l_jsonObj    json; 
    l_obj_out    json; 
    BEGIN 
    OPEN l_data FOR 

    SELECT DISTINCT rp.number, cd.name 
    FROM plan rp 
    FULL JOIN details cd ON rp.number = cd.number 
    ORDER BY number; 

    l_jsonArray := json_list(); 

    LOOP 
     FETCH l_data INTO 
     number_l, name_l; 
    EXIT WHEN l_data%NOTFOUND; 

     l_jsonObj := json(); 
     l_jsonObj.put('Number', number_l || '/' || client_name_l); 
    -- l_jsonObj.put('Name', name_l); 

     l_jsonArray.append(l_jsonObj.to_json_value); 

    END LOOP; 
    CLOSE l_data; 

    l_obj_out := json(); 
    l_obj_out.put('data',l_jsonArray);  
    result_o := ' '; 
    l_obj_out.to_clob(result_o); 

END load_client_numbers; 

가 왜 오류를 얻고 나는 다음과 같은 오류가 받고 있어요? 나는 정말 작은 것을 놓치고있는 것을 알고 있지만, 나는 오라클의 프로가 아니기 때문에 그것을 발견 할 수는 없습니다.

IF old_value_l = new_value_l THEN load_client_numbers(param); 
END IF; 

(NO CALL) 여기서 param가 CLOB처럼

답변

4

코드가 있어야한다.

+0

와우. 큰 감사 !!! 그것은 일했다 !!! 지금 당장은 할 수 없으므로 9 분 안에 답을 수락 할 것입니다. 다시 한 번 감사드립니다! – Slim