2014-03-30 176 views
0
CREATE OR REPLACE PROCEDURE TEST_RATING 
(
    P_RID OUT NUMBER 
, P_STARS OUT NUMBER 
, P_DATE OUT DATE 
) AS 
BEGIN 
SELECT RID, STARS, RATINGDATE 
INTO P_RID, P_STARS, P_DATE 
FROM RATING; 
END TEST_RATING; 

回答

1

這個過程看起來不太可能達到您想要的。除非保證rating表中總是有1行,否則在運行時會發生錯誤,表明您的查詢不返回任何行或返回多行。

如果你保證,你永遠有rating正好1行中,你可以調用一個匿名PL/SQL塊

DECLARE 
    l_rid number; 
    l_stars number; 
    l_date date; 
BEGIN 
    test_rating(l_rid, 
       l_stars, 
       l_date); 
END; 

當然這個過程中,你可能想要做的事與返回的數據即使只是調用dbms_output.put_line將其寫入dbms_output緩衝區。

+0

嗨賈斯汀,我想多行作爲輸出。我該怎麼做? – user1483598

+0

@ user1483598 - 這取決於您的要求以及您計劃如何處理數據。您可以編寫一個具有「SYS_REFCURSOR」類型的OUT參數的過程。然而,創建一個視圖可能更有意義。或者至少有一個函數,而不是具有'OUT'參數的過程。 –