【问题标题】:PL/SQL function error- not understandablePL/SQL 函数错误 - 无法理解
【发布时间】:2015-12-07 22:25:54
【问题描述】:

我必须做一个 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;

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


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 错误
6/5 PL/SQL:忽略 SQL 语句
13/5 PL/SQL:ORA-00933:SQL 命令未正确结束

【问题讨论】:

  • 每行的末尾都有一个;; 只出现在 statement 的末尾。
  • 谢谢你的回答,我的情况不是这样,删除“;”后它给出了这些错误:LINE/COL ERROR 6/5 PL/SQL:SQL 语句被忽略 13/5 PL/SQL:ORA-00933:SQL 命令未正确结束
  • 是的,它“你的情况”。而且你不应该删除 all ; 你仍然需要在每个语句的末尾有一个。
  • 我只删除了其中的 4 个。代码如下所示: 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 ;结尾; /
  • 编辑您的问题。不要在 cmets 中发布代码。

标签: sql function plsql


【解决方案1】:

只需添加一个';'在'AND p.project = project'之后表示sql语句终止,这将变得无错误。

【讨论】:

    【解决方案2】:
    --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; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多