2014-05-12 41 views
0

的過程我已經厭倦了,我的任務將在七個小時內完成。我需要一位善良的靈魂來幫助我!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重新執行該過程。現在會發生什麼?

這裏是我寫的一個:

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

認真嗎?你在堆棧溢出中尋求幫助嗎? – Arnab

回答

1

根據您的問題說明:get_country_info應該只有一個參數:COUNTRY_ID

  • 刪除其他兩個參數,並將其申報爲你的程序

  • 內局部變量顯示值,使用DBMS_OUTPUT.PUT_LINE

如果這是在SQL * Plus不要跑」 t忘記先跑步:

SET SERVEROUTPUT ON

也爲異常的一部分,看看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; 

好運。