2013-10-03 2 views
0

Oracle PL/SQL에서 지정된 등록에 대한 가장 최근 대여 날짜를 반환하는 저장 함수를 작성하려고합니다. 내가 SQL 문에서 함수를 호출하는 데 필요한하고오라클 저장 기능 관련 문제

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; 

그래서 내가 아는 등록 테이블에 사용하고 있습니다 :

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