2015-12-07 27 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;