PL / SQL函数错误 - 不可理解

时间:2015-12-07 22:25:54

标签: sql function plsql

我必须做一个pl / sql函数。我已经完成了它,但在服务器上它显示错误,但我不知道错误意味着什么。 有人能引导我走向正确的方向来完成这项功能吗?

这是代码: 显示错误

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;

我不知道这里的代码是否清晰,所以我添加了一个显示代码本身图像的文档,错误如下所示: 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

2 个答案:

答案 0 :(得分:0)

只需添加';'在' AND p.project = project'指示sql语句的终止,这将变得没有错误。

答案 1 :(得分:0)

#include <iostream>
int main() {
    for (int i=0; i < 100; i++) {
        int die1 = (rand() % 6) + 1;
        std::cout << "Generated random number:  " << die1 << std::endl;
    }
    return 0;
}