Oracle mn 58:PL/SQL:ORA-00904::无效标识符ORA-06550:第10行第5列:PL/SQL:SQL语句忽略06550。00000-“第%s行,第%s列:\n%s”*原因:通常是PL/SQL编译错误。我试图稍微更改一下语句:UPDATE Lo
Oracle mn 58:PL/SQL:ORA-00904::无效标识符ORA-06550:第10行第5列:PL/SQL:SQL语句忽略06550。00000-“第%s行,第%s列:\n%s”*原因:通常是PL/SQL编译错误。我试图稍微更改一下语句:UPDATE Lo,oracle,loops,plsql,oracle11g,sql-update,Oracle,Loops,Plsql,Oracle11g,Sql Update,mn 58:PL/SQL:ORA-00904::无效标识符ORA-06550:第10行第5列:PL/SQL:SQL语句忽略06550。00000-“第%s行,第%s列:\n%s”*原因:通常是PL/SQL编译错误。我试图稍微更改一下语句:UPDATE Location SET name='which'WHERE Location.id=loc\u rec.id;但是,当我运行它时,我将所有3条记录都更改为任意值,而不是1条记录。我尝试此操作时没有收到任何错误。如果您有当前loc_rec的位置,则
mn 58:PL/SQL:ORA-00904::无效标识符ORA-06550:第10行第5列:PL/SQL:SQL语句忽略06550。00000-“第%s行,第%s列:\n%s”*原因:通常是PL/SQL编译错误。我试图稍微更改一下语句:UPDATE Location SET name='which'WHERE Location.id=loc\u rec.id;但是,当我运行它时,我将所有3条记录都更改为任意值,而不是1条记录。我尝试此操作时没有收到任何错误。如果您有当前loc_rec的
位置,则光标名称必须为loc_rec
。您是作为匿名块(从声明开始)还是作为过程(从创建或替换过程abc开始)执行此操作?如果您使用,其中location.id=lock\u rec.id
和id
是主键,我不知道有什么方法可以更新三行。如果你仍然有问题,你能发布你的代码吗?
WHERE REGEXP_LIKE(Name, '[!@#$%^&*=+/<>?|]') ;
CREATE TABLE LOCATION
( "ID" NUMBER PRIMARY KEY,
"NAME" VARCHAR2(20 BYTE)
) ;
Insert into SYSTEM.LOCATION (ID,NAME) values ('2','RE#$');
Insert into SYSTEM.LOCATION (ID,NAME) values ('3','rete%#');
Insert into SYSTEM.LOCATION (ID,NAME) values ('4','Testjue');
Insert into SYSTEM.LOCATION (ID,NAME) values ('5','Test#');
DECLARE
CURSOR name_cursor IS
SELECT id, name
FROM Location
WHERE REGEXP_LIKE(name, '[!@#$%^&*=+/<>?|]')
FOR UPDATE OF name;
BEGIN
FOR loc_rec IN name_cursor LOOP
DBMS_Output.Put_Line(loc_rec.name);
UPDATE Location SET name = '&whatever' WHERE Location.id=loc_rec.ID;
END LOOP;
END;
DECLARE
CURSOR name_cursor IS
SELECT id, name
FROM Location
WHERE REGEXP_LIKE(name, '[!@#$%^&*=+/<>?|]')
FOR UPDATE OF name;
BEGIN
FOR loc_rec IN name_cursor LOOP
DBMS_Output.Put_Line(loc_rec.name);
UPDATE Location SET name = 'whatever' WHERE CURRENT OF loc_rec;
END LOOP;
END;
DECLARE
CURSOR name_cursor IS
SELECT id, name
FROM Location
WHERE REGEXP_LIKE(name, '[!@#$%^&*=+/<>?|]')
FOR UPDATE OF name;
BEGIN
FOR loc_rec IN name_cursor LOOP
DBMS_Output.Put_Line(loc_rec.name);
UPDATE Location
SET name = CASE LOC_REC.ID
WHEN '4' THEN 'Testjue'
ELSE 'Test'
END
WHERE Location.id=loc_rec.ID;
END LOOP;
END;
UPDATE Location
SET name = translate (name
, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*=+/<>?|'
, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
WHERE REGEXP_LIKE(name, '([!@#\$%\^&\*=\+/<>\?\|]+)')
/
UPDATE Location
SET name = translate (name
, '!@#$%^&*=+/<>?|'
, 'la3sk6787abciqi'
)
WHERE REGEXP_LIKE(name, '([!@#\$%\^&\*=\+/<>\?\|]+)')
/
ID NAME
---------- --------------------
2 RE#$
3 rete%#
SELECT *
FROM LOCATION
WHERE REGEXP_LIKE(name, '[!@#$%^&*=+/<>?|]');
/
DECLARE
CURSOR name_cursor IS
SELECT id, name
FROM Location
WHERE REGEXP_LIKE(name, '[!@#$%^&*=+/<>?|]')
FOR UPDATE OF name;
v_RecordID number;
BEGIN
v_RecordID := &ID;
FOR loc_rec IN name_cursor LOOP
DBMS_Output.Put_Line(loc_rec.name);
UPDATE Location SET name = '&Name'
WHERE Location.id=v_RecordID;
END LOOP;
END;