2013-10-03 60 views
0

我正在嘗試在Oracle PL/SQL中構建一個存儲函數,它將返回給定註冊的最近租用日期。Oracle存儲函數問題

我的功能如下:所以我使用的是註冊時,我知道是表

CREATE OR REPLACE Function rec_date_sf(reg_in IN varchar2) 
RETURN DATE 
IS 
    lv_max_date DATE; 
Begin 
    SELECT MAX(Date_Rent_Start) 
    INTO lv_max_date 
    FROM i_booking 
    WHERE reg_in = registration; 
    RETURN lv_max_date; 
END; 

我需要調用SQL語句的功能:

SELECT rec_date_sf(date_rent_start), 
     registration 
    FROM i_booking 
WHERE registration = 'E246WFC'; 

這是返回rec_date_sf函數的空白,而不是生成最大日期。

是否有人可以將他們的眼睛放在這段代碼上,並告訴我哪裏出錯了?

+0

只是一個建議 - 從來沒有像這樣混合SQL的PL/SQL。你可能會遇到非常令人驚訝的問題。只有性能,而且查詢可以返回錯誤的結果。或者至少使用'可序列化的隔離級別'。 – ibre5041

回答

0

看起來它有點混淆了:你將看起來像日期的東西傳遞給一個正在接受字符參數的函數。

也許你想要這樣的事情?

SELECT rec_date_sf(registration) as date_rent_start, 
     registration 
    FROM i_booking 
WHERE registration = 'E246WFC'; 
+0

完美。謝謝。 – Splunk