Oracle 函数PL/SQL不支持';不返回任何值
我有下一个Oracle 函数PL/SQL不支持';不返回任何值,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我有下一个PL/SQL代码: create or replace FUNCTION NUMBER_PLATES (name VARCHAR2) RETURN INT IS num_plates INT; BEGIN SELECT count(*) INTO num_plates FROM plate p, detail_ped dt WHERE dt.plate = p.cod_plate AND p.name = name; RETURN (nu
PL/SQL
代码:
create or replace FUNCTION NUMBER_PLATES (name VARCHAR2)
RETURN INT
IS
num_plates INT;
BEGIN
SELECT count(*) INTO num_plates
FROM plate p, detail_ped dt
WHERE dt.plate = p.cod_plate AND p.name = name;
RETURN (num_plates);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('ERROR');
END NUMBER_PLATES;
下一步是将函数执行为SQL命令:
DECLARE a INT;
BEGIN
a := NUMBER_PLATES('chicken');
DBMS_OUTPUT.PUT_LINE(a);
END;
但函数在实际值为3时返回0
我做错了什么
如果我执行我的SQL
语句,则返回3:
SELECT count(*)
FROM plate p, detail_ped dt
WHERE dt.plate = p.cod_plate AND p.name = 'chicken';
应重命名参数名称以避免名称冲突:
create or replace FUNCTION NUMBER_PLATES (p_name VARCHAR2)
RETURN INT
IS
num_plates INT;
BEGIN
SELECT count(*) INTO num_plates
FROM plate p
JOIN detail_ped dt -- proper JOIN syntax
ON dt.plate = p.cod_plate
WHERE p.name = p_name;
RETURN (num_plates);
-- exception is dead code, COUNT(*) will return 0 if no records found
-- EXCEPTION
-- WHEN NO_DATA_FOUND THEN
-- DBMS_OUTPUT.PUT_LINE('ERROR');
END NUMBER_PLATES;
/