2015-12-07 48 views
-3

我必須做一個pl/sql函數。我已經完成了它,但在服務器上顯示錯誤,但我不知道錯誤的含義。 有人可以引導我進入正確的方向來完成該功能嗎?PL/SQL函數錯誤 - 無法理解

這是代碼: SHOW ERRORS

CREATE OR REPLACE FUNCTION sum_of_task_types(project project.project_no%TYPE) 
RETURN NUMBER IS 
task NUMBER; 

    BEGIN 
    SELECT COUNT(DISTINCT t.task_type_no) 
    INTO task 
    FROM project p, stage s, task t ; 
    WHERE user_input_var = p.project_no; 
    AND p.project_no = s.project_no; 
    AND s.stage_id = t.stage_id; 
    AND p.project = project; 
    RETURN task; 

    END; 
    /

功能

SELECT project_no, sum_of_task_types(project_no)project; 

我不知道如果代碼看起來清晰這裏的--use,所以我添加了一個文檔的表現代碼本身的圖像顯示如下錯誤: enter image description here


CREATE OR REPLACE FUNCTION sum_of_task_types(project project.project_no%TYPE) 
RETURN NUMBER IS 
task NUMBER; 

BEGIN 
SELECT COUNT(DISTINCT t.task_type_no) 
INTO task 
FROM project p, stage s, task t 
WHERE user_input_var = p.project_no 
AND p.project_no = s.project_no 
AND s.stage_id = t.stage_id 
AND p.project = project 
RETURN task; 

END; 
/

我已經這樣做了,現在,仍然給錯誤:

LINE/COL ERROR 
6/5  PL/SQL: SQL Statement ignored 
13/5 PL/SQL: ORA-00933: SQL command not properly ended 
+1

你在每行**的末尾都有';'。 ';'只在_statement_結尾。 –

+0

謝謝您的回答,這不是我的情況,刪除「;」後它給了這些錯誤:LINE/COL \t ERROR 6/5 \t PL/SQL:ORA-00933:忽略 13/5 \t PL/SQL SQL語句SQL命令無法正常結束 – Lumena

+0

是的,這是** **「你案件」。而且你不應該刪除所有**';'你在每個語句結尾處仍然需要一個。 –

回答

0

只需添加一個 ';'在'AND p.project = project'之後,指示sql語句的終止,並且這將變爲無錯誤。

0
--There was a slight ';' syntactical mistake which was in the way of compiling FUNCTION correctly. I have posted below code hope it helps 

CREATE OR REPLACE FUNCTION sum_of_task_types(
    project project.project_no%TYPE) 
    RETURN NUMBER 
IS 
    task NUMBER; 
BEGIN 
    SELECT COUNT(DISTINCT t.task_type_no) 
    INTO task 
    FROM project p, 
    stage s, 
    task t 
    WHERE user_input_var = p.project_no 
    AND p.project_no  = s.project_no 
    AND s.stage_id  = t.stage_id 
    AND p.project  = project; 
    RETURN task; 
END;