Получение инструкции pl / sql игнорируется ошибка при написании процедуры - PullRequest
0 голосов
/ 25 февраля 2019
create or replace PROCEDURE CREATE_DEL_DEPT <br>
(
  PARAM1 IN VARCHAR2 Default '%',
  PARAM2 IN VARCHAR2 Default '%',
  PARAM3 IN BOOLEAN Default True
) AS

PRAGMA AUTONOMOUS_TRANSACTION; 
CURSOR Employees IS
    Select Employee_ID, First_name, Last_Name
    From HR.employees Where Department_ID = PARAM2;
BEGIN
    For Employee_ID in Employees LOOP
        if Department_ID = 20 then
            DBMS_OUTPUT.PUT_LINE ('test');
        elsif Department_ID = 30 then
            DBMS_OUTPUT.PUT_LINE ('test1');
        else
            DBMS_OUTPUT.PUT_LINE ('else test');
        end if;
    END LOOP;

END;

Я получаю следующую ошибку.В строке 14 указано начало оператора «If»

Ошибка (14,9): PL / SQL: оператор игнорируется

1 Ответ

0 голосов
/ 25 февраля 2019

Вам нужно обратиться к department_id при выборе из таблицы в курсоре

CREATE OR REPLACE PROCEDURE create_del_dept 
(
  PARAM1 IN VARCHAR2 Default '%',
  PARAM2 IN VARCHAR2 Default '%',
  PARAM3 IN BOOLEAN Default True
) AS

PRAGMA AUTONOMOUS_TRANSACTION; 
CURSOR Employees IS
    Select Employee_ID, First_name, Last_Name,department_id
       From HR.employees Where Department_ID = PARAM2; 
    BEGIN
     for rec in employees LOOP
          IF
               rec.department_id = 20
          THEN
               dbms_output.put_line('test');
          ELSIF rec.department_id = 30 THEN
               dbms_output.put_line('test1');
          ELSE
               dbms_output.put_line('else test');
          END IF;
     END LOOP;
END;
/

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

for rec in ( Select Employee_ID, First_name, Last_Name,department_id
              From HR.employees Where Department_ID = PARAM2 
       ) loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...