declare
cursor abc is
select USER_NAME from dba_users;
begin
for i in abc
loop
select status
into person_status
from dba_users
where USER_NAME := i;
insert status into table_1;
commit;
end loop;
end;
/
它给出的错误如下:
select status into person_status from dba_users where USER_NAME := i;
ERROR at line 18:
ORA-06550: line 18, column 77:
PL/SQL: ORA-00920: invalid relational operator
ORA-06550: line 18, column 1:
PL/SQL: SQL Statement ignored
ORA-06550: line 19, column 82:
PL/SQL: ORA-00933: SQL command not properly ended
ORA-06550: line 19, column 1:
PL/SQL: SQL Statement ignored
有人能帮我把for
循环变量传递给选择语句的where
条件吗?
谢谢。
2条答案
按热度按时间x33g5p2x1#
它不仅仅是无效的
where
子句;还有很多其他的错误假设这是一个目标表:
PL/SQL代码(阅读注解):
结果:
型
另一方面(正如Jain已经说过的),您应该直接插入行,而不用PL/SQL:
twh00eeo2#
您在where条件中使用了:=
用户名:= i;
使用时不要:喜欢
或者您可以使用单个命令来完成此工作。
但是,我在我的DB上描述了DBA_USERS,其中没有Person_status字段,而是有ACCOUNT_STATUS字段。