会提示num不能作为into的添加目标
create or replace procedure user_add (
resultStr out char,
v_username in CHAR,
v_userid in CHAR,
v_password in CHAR,
v_id_number in VARCHAR2,
v_roleid in CHAR,
num in char
) is
Begin
select userid into num from userinfo where userid!='';
if v_userid = num then
insert into userinfo(username,userid,password,id_number) values(v_username,v_userid,v_password,v_id_number);
insert into user_role(userid,roleid) values(v_userid,v_roleid);
ResultStr := 'success: 添加成功!';
else
ResultStr := 'success: 用户名已存在!';
end if;
End;
报错的原因是因为你的 num 参数 是个 "in" 的,只能由外部传入,不能赋值,除非设置成 "in out"
另外,就算你设置成了in out ,它还是会报错,报查到了多行数据 ,因为 你的where 条件是 userid!='',多行记录是不能塞到一个char类型里的字段里去的,
而且,假设你表里没有记录,它也会直接报错nodatafound。
你如果是想校验传入的v_userid 是否已存在,建议改成这样
create or replace procedure user_add(resultStr out char,
v_username in CHAR,
v_userid in CHAR,
v_password in CHAR,
v_id_number in VARCHAR2,
v_roleid in CHAR) is
num number;
Begin
select count(1) into num from userinfo where userid = v_userid;
if num = 0 then
insert into userinfo
(username, userid, password, id_number)
values
(v_username, v_userid, v_password, v_id_number);
insert into user_role (userid, roleid) values (v_userid, v_roleid);
ResultStr := 'success: 添加成功!';
else
ResultStr := 'success: 用户名已存在!';
end if;
End;