COUNT
如果不使用内置函数,如何根据条件计算表中的字段?有没有办法做到这一点?
要求如下:
创建一个名为 findtotalcarmodels 的 PL/SQL 函数以返回属于特定模型的汽车总数。该函数应该有一个 IN 参数作为 model_name。然后,您应该使用显式游标来计算属于该车型的汽车数量并返回最终数量。您不得使用任何隐式游标、表连接、子查询、集合运算符、组函数或 SQL 函数(例如 COUNT)来创建此函数。
SUM(CASE WHEN <condition on your fields> THEN 1 ELSE 0 END)
这可能是我写的最愚蠢的答案。业内没有人是这样工作的。
答案如下:
CREATE OR REPLACE FUNCTION findtotalcarmodels
( model_name IN VARCHAR2)
IS
CURSOR mycur IS
SELECT model_name_col FROM car_table;
mycount INTEGER := 0;
current_model_name VARCHAR2(10);
BEGIN
OPEN mycur;
FETCH mycur INTO current_model_name;
WHILE mycur%FOUND LOOP
IF current_model_name = model_name THEN
mycount := mycount + 1;
END IF;
FETCH mycur INTO current_model_name;
END LOOP;
CLOSE mycur;
dbms_output.put_line('The count is ' || mycount);
END;
/