Oracle 编写过程时获取pl/sql语句时发生忽略错误 create或replace PROCEDURE create\u DEL\u DEPT ( VARCHAR2默认值“%”中的PARAM1, VARCHAR2默认值“%”中的PARAM2, 布尔值中的PARAM3默认为True )作为 布拉格自治交易; 游标的雇员是 选择员工ID、姓名、姓氏 来自HR.employees,其中部门ID=PARAM2; 开始 对于Employees循环中的Employees\u ID 如果部门ID=20,则 DBMS_OUTPUT.PUT_行('test'); 如果部门ID=30,则 DBMS_OUTPUT.PUT_行('test1'); 其他的 DBMS_OUTPUT.PUT_行('else test'); 如果结束; 端环; 结束;

Oracle 编写过程时获取pl/sql语句时发生忽略错误 create或replace PROCEDURE create\u DEL\u DEPT ( VARCHAR2默认值“%”中的PARAM1, VARCHAR2默认值“%”中的PARAM2, 布尔值中的PARAM3默认为True )作为 布拉格自治交易; 游标的雇员是 选择员工ID、姓名、姓氏 来自HR.employees,其中部门ID=PARAM2; 开始 对于Employees循环中的Employees\u ID 如果部门ID=20,则 DBMS_OUTPUT.PUT_行('test'); 如果部门ID=30,则 DBMS_OUTPUT.PUT_行('test1'); 其他的 DBMS_OUTPUT.PUT_行('else test'); 如果结束; 端环; 结束;,oracle,plsql,Oracle,Plsql,我有以下错误。第14行是“If”语句的起始位置 错误(14,9):PL/SQL:语句被忽略 从光标中的表格中选择时,需要参考部门id create or replace PROCEDURE CREATE_DEL_DEPT <br> ( PARAM1 IN VARCHAR2 Default '%', PARAM2 IN VARCHAR2 Default '%', PARAM3 IN BOOLEAN Default True ) AS PRAGMA AUTONOMOUS_T

我有以下错误。第14行是“If”语句的起始位置

错误(14,9):PL/SQL:语句被忽略


从光标中的表格中选择时,需要参考部门id

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;
顺便说一下,您可以通过使用隐式游标循环来简化代码,避免游标定义

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;
/

请注意,如果使用默认值调用过程,查询将返回零行
其中Department_ID=PARAM2
不匹配
“%”
。平等不需要通配符
for rec in ( Select Employee_ID, First_name, Last_Name,department_id
              From HR.employees Where Department_ID = PARAM2 
       ) loop