JKLk2 2022-03-25 13:49 采纳率: 66.7%
浏览 28
已结题

Oracle存储过程在添加的时候判断表里有没有相同的id怎么写

会提示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;

  • 写回答

1条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-03-25 14:49
    关注

    报错的原因是因为你的 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;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月2日
  • 已采纳回答 3月25日
  • 创建了问题 3月25日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度