Я не понимаю, в чем проблема в моей процедуре магазина - PullRequest
0 голосов
/ 23 апреля 2020
Create or replace PROCEDURE SSp_EmpHoursInfo
(p_EHrsInfo OUT SYS_REFCURSOR)
AS
BEGIN
OPEN p_EHrsInfo FOR
                     Select 
                     a.personid, a.first_name, a.last_name,c.hoursworked,d.carecentername, c.break

                     from person a
                     join employee b on a.personid = b.empersonid 
                     join employee_assigned_care_center c on b.empersonid = c.empersonid
                     join care_center d on c.empersonid = d.carecenterid
                     where hoursworked> 10;

END SSp_EmpHoursInfo;

Каждый раз, когда я пытаюсь вызвать процедуру хранилища, появляется сообщение об ошибке:

Error starting at line : 225 in command -
BEGIN SSp_EmpHoursInfo (hoursworked> 10); END;
Error report -
ORA-06550: line 1, column 3:
PLS-00201: identifier 'HOURSWORKED' must be declared
ORA-06550: line 1, column 52:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

1 Ответ

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

Проблема очень очевидна.

BEGIN SSp_EmpHoursInfo (hoursworked> 10); END; - неправильный способ ее вызова.

Параметр процедуры должен быть sys_refcursor.

Вы должны использовать :

DECLARE
  OUTPUT_CUR SYS_REFCURSOR;
BEGIN
  SSp_EmpHoursInfo (OUTPUT_CUR );
  -- USE CURSOR ACCORDINGLY
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...