2013-07-27 3 views
0

where 절을 사용하여 Rating이라는 테이블에있는 행 수를 반환하는 함수를 만들려고합니다. declare 문과 end 문 앞에는 어디가 잘못됩니까?오라클 pl sql 함수에 오류가 있습니다.

create or replace 
FUNCTION get_movies(user IN NUMBER) RETURN NUMBER 
IS 
    DECLARE cnt NUMBER; 
BEGIN 
SELECT count(*) 
INTO cnt 
FROM rating 
where userid= user; 
RETURN cnt; 
END; 

감사합니다. 감사합니다.

답변

3

DECLARE 키워드가 없어야합니다. 익명 블록 (또는 하위 블록)에만 필요합니다.

create or replace 
FUNCTION get_movies(p_userid IN NUMBER) RETURN NUMBER 
IS 
    cnt NUMBER; 
BEGIN 
    ... 

user은 예약어이므로 매개 변수 이름으로 사용하지 않을 것을 제안합니다. where 절에서 매개 변수 값이나 함수를 실행하는 사용자의 이름을 사용할지 확실하지 않습니다. 그 문자열 값을 암시 적으로 숫자로 변환 할 수 없으므로 오류가 발생합니다.

+0

감사합니다. Alex, 나는 그 사실을 알아 차 렸습니다. 감사합니다. –