Pl sql Процедура в недопустимом состоянии - PullRequest
0 голосов
/ 13 апреля 2020

Я создал следующую процедуру:

 create or replace function getDepartmentById(name varchar2)
  return number
  is v_dep number(10)
  begin
  --the sql statement is totally fine
 select deptno into v_dep from dept where dname = name;
  end;
/

, но когда я звоню

 select getDepartmentById('SALES') into dep from dual;

, я получаю это сообщение об ошибке

Error report -
ORA-06550: line 20, column 14:
PL/SQL: ORA-06575: Package or function GETDEPARTMENTBYID is in an invalid state
ORA-06550: line 20, column 7:
PL/SQL: SQL Statement ignored

1 Ответ

1 голос
/ 13 апреля 2020

Вам необходимо добавить возвращаемое значение для функции. Это выглядит так:

CREATE OR replace FUNCTION Getdepartmentbyid(name VARCHAR2) 
RETURN NUMBER 
IS 
  v_dep NUMBER(10); 
BEGIN 
    --the sql statement is totally fine 
    SELECT deptno 
    INTO   v_dep 
    FROM   dept 
    WHERE  dname = name; 

    RETURN v_dep; 
END; 

Вы не можете использовать INTO в своем операторе выбора. Вы должны вызвать функцию следующим образом.

select getDepartmentById('SALES') from dual;
...