2014-05-12 2 views
0

필자의 작업은 7 시간 만에 마감되었습니다. 나를 도울 친절한 영혼이 필요합니다!매개 변수가있는 PL/SQL 프로 시저

그래서 이것은 내 첫 번째 PL/SQL 클래스입니다. 우리는 절차와 기능에 관한 연구를 시작하고 있습니다.

그래서 여기에 내가 붙어 있습니다. 질문 :

이 질문은 wf_countries 테이블을 사용합니다.

가. country_id를 매개 변수로 받아 들여 국가 이름과 해당 국의 국회 의사당 도시를 표시하는 프로 시저를 만듭니다. 프로 시저의 이름을 get_country_info로 지정하십시오. 나중에 사용할 수 있도록 프로 시저 정의를 저장하십시오.

B.는 country_id (90)

를 사용하여, 익명의 블록에서 프로 시저를 실행

C. 다시 실행 country_id 어떻게됩니까 95을 사용하여 익명 블록에서 이번에 절차를?

D. 저장된 SQL에서 프로 시저 코드를 검색하고 예외 처리기에서 NO_DATA_FOUND 예외를 트랩하도록 수정하십시오. 다시 country_id 95를 사용하여 프로 시저를 다시 실행하십시오. 이제 어떻게됩니까? 여기

내가 A의 쓴 것입니다 :

CREATE OR REPLACE PROCEDURE get_country_info 
(p_id IN wf_countries.country_id%TYPE, 
p_capitol OUT wf_countries.capitol%TYPE, 
p_name OUT wf_countries.country_name%TYPE) 
IS 
BEGIN 
SELECT capitol, country_name 
INTO p_capitol, p_name 
FROM wf_countries 
WHERE country_id=p_id; 
END; 

내가 그것을 실행되었다. 그러나 다음을 입력하여 프로 시저를 호출하려고하면 :

BEGIN 
get_country_info 
END; 

국가 ID가 필요하다는 것을 깨달았습니다. 이봐. 하지만 더 많은 매개 변수가 필요하기 때문에 get_country_info (90)를 넣을 수는 없습니다. 국가 ID를 매개 변수로 사용하고 이름과 국회 의사당을 표시하면됩니다.

저는 정말로 좌절감을 느끼고 제공 할 수있는 도움에 감사드립니다.

+1

심각하게? Stack Overflow에서 과제에 대한 도움을 요청하고 있습니까? – Arnab

답변

1

문제 사양에 따라 : get_country_info은 하나 개의 매개 변수를 사용한다 : 을 country_id.

를 사용하는 다른 두 개의 매개 변수를 제거하고 값을 표시하는 데 사용되는 절차

  • 내부의 지역 변수로 선언 ' 먼저 실행하는 것을 잊어 버리십시오.

    SET SERVEROUTPUT ON

    호출 할 때 10

    또한 예외의 경우, Error Handling 다음

  • 0
    CREATE OR REPLACE PROCEDURE get_country_info 
        (p_id IN wf_countries.country_id%TYPE, 
        oCur OUT SYS_REFCURSOR 
    ) 
    IS 
    BEGIN 
        OPEN oCur FOR 
        SELECT capitol, country_name 
         FROM wf_countries 
        WHERE country_id=p_id; 
    END; 
    

    , 한 번 봐 가지고 :

    DECLARE retCursor SYS_REFCURSOR; 
    BEGIN 
        get_country_info(123, retCursor); 
    END; 
    /
    
    0

    이 시도 :

    CREATE OR REPLACE PROCEDURE get_country_info 
        (p_id IN wf_countries.country_id%TYPE) 
    IS 
        vCapitol wf_countries.capitol%TYPE; 
        vName  wf_countries.country_name%TYPE; 
    BEGIN 
        SELECT capitol, 
         country_name 
        INTO vCapitol, 
         vName 
        FROM wf_countries 
        WHERE country_id = p_id; 
    
        DBMS_OUTPUT.PUT_LINE('Name=' || vName || ' Capitol=' || vCapitol); 
    EXCEPTION 
        WHEN NO_DATA_FOUND THEN 
        DBMS_OUTPUT.PUT_LINE('No data found for COUNTRY_ID=' || p_id); 
    END; 
    

    행운을 빕니다.

    관련 문제