2013-11-17 7 views
0

Мне нужно вычислить и вернуть общее количество различных типов задач, участвующих в заданном проекте.Ошибка при вычислении и возврате функции

Параметр ввода - это идентификатор проекта (то есть project_no или project_code), вывод - это количество разных типов задач.

Это функция:

CREATE OR REPLACE FUNCTION task_types (pno NUMBER) 
RETURN NUMBER IS 
    return_var NUMBER; 
BEGIN 
    SELECT COUNT (DISTINCT t.task_type_no) 
    INTO return_var 
    FROM stage s, task t, project p 
    WHERE p.project_no = pno 
    AND  p.project_no = s.project_no 
    AND  s.stage_id = t.stage_id; 

    RETURN return_var; 
END; 
/

SELECT project_no, task_types(project_no) 
FROM project; 

Ошибка:

Error at line 17: PLS-00103: Encountered the symbol "/" 

1. CREATE OR REPLACE FUNCTION task_types (pno NUMBER) 
2. RETURN NUMBER IS 
3. return_var NUMBER; 

Кто-нибудь знает, как сделать эту работу?

+1

Является ли это mysql или Oracle? Синтаксис выглядит как PLSQL, но у вас есть оба тега в вопросе ... – a1ex07

+0

Это PL SQL у вас есть идеи, как это решить? –

ответ

0

Зачем использовать функцию, когда SQL делает это намного лучше?

SELECT p.project_no, 
     (SELECT COUNT(DISTINCT t.task_type_no) 
      FROM stage s 
      JOIN task t on (t.stage_id = s.stage_id) 
     WHERE s.project_no = p.project_no) as diff_task_type_count 
    FROM project p; 
Смежные вопросы