首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle iSQL函数问题

Oracle iSQL函数问题
EN

Stack Overflow用户
提问于 2016-10-11 12:28:23
回答 1查看 84关注 0票数 0

编辑:我现在已经更改了代码。

我的函数有问题,在创建函数时没有错误,我可以运行一个基本版本的函数,没有任何问题,但是当我调用整个函数时,会得到空白行。

这个版本起作用

代码语言:javascript
复制
SELECT   SUM(t.estimated_hours*c.hrly_charge_rate)
FROM     task t, task_history ta, task_type tt, charge_grade c
WHERE    t.task_id = ta.task_id
AND      tt.task_type_no = t.task_type_no
AND      c.grade_no = tt.grade_no
AND      ta.task_history_id = 1;

但这不起作用,行只是空白?

代码语言:javascript
复制
SHOW ERRORS 

CREATE OR REPLACE FUNCTION total_cost (tn task.task_id%TYPE) 
RETURN NUMBER IS

    cost_var   NUMBER;

BEGIN
    SELECT   SUM(t.estimated_hours*c.hrly_charge_rate)
    INTO     cost_var
    FROM     task t, task_history ta, task_type tt, charge_grade c
    WHERE    t.task_id = ta.task_id
    AND      tt.task_type_no = t.task_type_no
    AND      c.grade_no = tt.grade_no
    AND      t.task_type_no = tn
    AND      ta.task_history_id = 1;

    RETURN   cost_var;

END;
/

-- my call select statment 


SELECT  total_cost(t.task_id) AS task_cost
FROM    task t;

它运行时没有错误,但行都是空的?能告诉我我做错了什么吗。

这是实体关系图(ERD)

并询问/* (b),在估算之日(即在对估计时数进行任何进一步更改之前),使用给定任务的标准费率计算和返回总成本。代码脚本,包括SELECT语句来测试每个函数+每个测试语句输出的“屏幕截图”。*/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-11 12:38:40

似乎您正在使用HAVING来应用一个简单的WHERE条件。同样的例子:

代码语言:javascript
复制
SQL> create table groupTable (id number, num number);

Table created.

SQL> select sum(num)
  2  from groupTable
  3  where id = 1;

  SUM(NUM)
----------


SQL> select sum(num)
  2  from groupTable
  3  having id = 1;
having id = 1
       *
ERROR at line 3:
ORA-00979: not a GROUP BY expression


SQL> select sum(num)
  2  from groupTable
  3  group by id
  4  having id = 1;

no rows selected

SQL> select sum(num)
  2  from groupTable
  3  group by id
  4  having sum(num) = 1;

no rows selected

SQL> select sum(num)
  2  from groupTable
  3  where sum(num) = 1
  4  group by id;
where sum(num) = 1
      *
ERROR at line 3:
ORA-00934: group function is not allowed here


SQL>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39977257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档