首页 > 解决方案 > 我无法执行我在 oracle 中使用 sql developer 创建的这个过程,可能是语法错误?还是可以在程序内部使用更新?

问题描述

我要做的是......
“编写一个程序来修改部门的位置。该程序将作为 IN 参数获取

重要说明(我在 ORACLE 的 HR 默认模式中工作)

我有这个 Pl/SQL 代码

SET SERVEROUTPUT ON
    BEGIN
        MOD_LOCALI(&n_dep, &nueva_local);
    END;

我正在尝试创建这个存储过程


    create or replace PROCEDURE MOD_LOCALI 
(
  N_DEP IN NUMBER 
, NUEVA_LOCAL IN VARCHAR2 
) AS 
BEGIN
    UPDATE departments d
    SET d.location_id = (SELECT d.location_id
                            FROM departments d
                            INNER JOIN locations l
                            ON d.location_id = l.location_id
                            WHERE l.city = NUEVA_LOCAL;
                        )
    WHERE d.department_id = N_DEP;

    DBMS_OUTPUT.PUT_LINE( 'El departmento con número ' || N_DEP || ', se ha mudado a ' || NUEVA_LOCAL);

END MOD_LOCALI;

但是当我执行保存它的过程时(我在 oracle sql developer 中按下编译按钮),我得到了这些错误

在此处输入图像描述

就是这样,提前谢谢

标签: oracleplsqloracle11g

解决方案


从子查询中删除分号并在“end mod_locali;”之后添加“/”

https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=b6b8371c5ed33b733681c5a436f44982


推荐阅读