Plsql 在PL/SQL中使用LIKE

Plsql 在PL/SQL中使用LIKE,plsql,Plsql,我想更新现有部门的位置ID,该部门的位置ID前面带有“HQ”作为“HQ-BLR-101” 表名:部门 Column name Data type Constraints DEPARTMENT_ID NUMBER(5) PK DEPARTMENT_NAME VARCHAR2(25) NOT NULL LOCATION_ID VARCHAR2(15) Sample Output: DEPARTMENT_ID DEPARTMENT_NAME

我想更新现有部门的位置ID,该部门的位置ID前面带有“HQ”作为“HQ-BLR-101”

表名:部门

Column name       Data type    Constraints

DEPARTMENT_ID     NUMBER(5)     PK

DEPARTMENT_NAME   VARCHAR2(25)  NOT NULL

LOCATION_ID       VARCHAR2(15)

Sample Output:
DEPARTMENT_ID DEPARTMENT_NAME    LOCATION_ID

---------------------- ------------------------------ ------------------

                xxxx            xxxxx                                   HQ-BLR-101
我已经写了这个代码-

declare
v_loc department.location_id%type;
begin
select 'HQ-BLR-101' into v_loc from department where location_id like 'HQ%';
insert into department(department_id, department_name, location_id) 
select department_id, department_name, v_loc from department where location_id like 'HQ%';
commit;
end;
/

你能帮我找到这个代码中的错误吗?提前谢谢

如果您编辑您的问题并告诉我们您遇到了什么错误,这会有所帮助,但有一件事会跳出来:如果部门中有多行位置像“HQ%”一样,您的第一个语句将因“行太多”错误而失败。幸运的是,我认为你不需要这样的陈述。我建议你试试:

begin
  insert into department
    (department_id, department_name, location_id) 
  select department_id, department_name, 'HQ-BLR-101'
    from department
    where location_id like 'HQ%';

  commit;
end;
但在问题的第一句话中,你说你想更新现有位置。为此,您应使用:

UPDATE DEPARTMENT
  SET LOCATION_ID = 'HQ-BLR-101'
  WHERE LOCATION_ID LIKE 'HQ%';

是 啊对于这个问题,只需使用update函数就可以了。再次非常感谢:)