Plsql 在PL/SQL中使用LIKE
我想更新现有部门的位置ID,该部门的位置ID前面带有“HQ”作为“HQ-BLR-101” 表名:部门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
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函数就可以了。再次非常感谢:)