CREATE OR REPLACE Function TotalIncome
(name_in IN varchar2)
RETURN varchar2
IS
total_val number(6);
cursor c1 is
select monthly_income
from employees
where name = name_in;
BEGIN
total_val := 0;
FOR employee_rec in c1
LOOP
total_val := total_val + employee_rec.monthly_income;
END LOOP;
RETURN total_val;
END;
在这个例子中的值循环,我被告知,我们循环通过的价值观,但我不明白的是,如果我们通过价值循环为什么是必要的employee_rec.monthly_income
?另外,当我做FETCH
employee_rec
我似乎得到一个错误,所以我猜他们是不同的。PL/SQL通过游标
为什么这么复杂? 'select sum(monthly_income)from employees where name = name_in'在没有游标的情况下做同样的事情 - 并且会更有效率。 – 2013-03-21 12:21:52
我只是用它作为了解游标的玩具示例 – Cemre 2013-03-21 12:22:42
将参数名称从“name_in”更改为“name”以匹配列名称,并在游标中将其称为totalincome.name。您的返回类型应该是数字,total_val应该有一个类型的employee_rec.monthly_income%类型,或者可能只是数字。考虑将游标的SQL放在FOR语句中,而不是使用命名游标 - 如果代码审阅者不必四处查看c1的含义,将更容易支持。至少,给它一个体面的名字;)。 – 2013-03-21 13:58:44