For loop PL/SQL中If条件下的字符串比较
我有以下代码For loop PL/SQL中If条件下的字符串比较,for-loop,if-statement,plsql,oracle12c,For Loop,If Statement,Plsql,Oracle12c,我有以下代码 create or replace procedure deact_user (i_email in varchar2) as var1 varchar2(200); begin for em_id in (select abc.emai_id from abc) loop if (i_email <> em_id) then dbms_output.put_line('Not working'); else dbm
create or replace procedure deact_user (i_email in varchar2)
as
var1 varchar2(200);
begin
for em_id in (select abc.emai_id from abc)
loop
if (i_email <> em_id) then
dbms_output.put_line('Not working');
else
dbms_output.put_line('Working');
end if;
end loop;
end;
我需要将输入参数I_email与em_id进行比较,em_id是一个for循环,它循环表abc的字段作为emai_id。
Iam面临错误PLS=00306调用“!=”时参数类型错误
请帮助当您将for循环与select一起使用时,它将创建一个记录类型。要访问该值,您必须将if更改为:
if (I_email <> em_id.emai_id)
.....
那应该能解决你的问题。另一方面,使用您的变量使用where子句进行查询会更快更容易。这样,就不需要for循环了 我建议您使用游标读取内容,并比较如下值:
create or replace procedure deact_user (i_email in varchar2)
as
var_id varchar2(200);
cursor cur_em_id is select abc.emai_id from abc;
begin
open cur_em_id;
loop
fetch cur_em_id into var_id;
exit when cur_em_id%NOTFOUND;
if (i_email <> var_id) then
dbms_output.put_line('Not working');
else
dbms_output.put_line('Working');
end if;
end loop;
close cur_em_id;
end;
顺便说一句,if条件周围不需要括号。