我想定义一个函数,用来进行用户登录和用户权限判断,有学生、教师、管理员、信息员四种角色(其中信息员是学生的一种角色),这四个角色被存在3张表(Student、Supervisor、Administrator)中,每个表都有用户ID,用户密码和用户权限三个字段,用户权限取值范围为0-3,1代表学生、2代表信息员、3代表老师、0代表管理员,我想在mysql中创建function,接收用户名和密码两个参数,返回一个flag的整型,返回不同的整数,代表不同的角色,现在函数写出来了,但是不能执行,小弟新手,请高手帮忙解决一下,先说声谢啦~~
代码如下:
delimiter$$
DROPFUNCTIONIFEXISTSsp_login$$
CREATEFUNCTIONsp_login(userIDVARCHAR(20),passPwdVARCHAR(20))RETURNSINT(1)
BEGIN
DECLAREflagINTdefault5;
IFSELECTStu1.AuthorityFROM(SELECT*fromStudentwhereStudent.StuID=userIDandStudent.StuPwd=passPwd)Stu1
whereStu1.Authority='1'>0THEN
SETflag=1;
RETURNflag;
ELSEIFSELECT*fromSupervisorwhereSupervisor.SVID=userIDandSupervisor.SVPwd=passPwd>0THEN
SETflag=3;
RETURNflag;
ELSEIFSELECTStu2.AuthorityFROM(SELECT*fromStudentwhereStudent.StuID=userIDandStudent.StuPwd=passPwd)Stu2
whereStu2.Authority='2'>0THEN
SETflag=2;
RETURNflag;
ELSEIFSELECT*fromAdministratorwhereAdministrator.AdminID=userIDandAdministrator.AdminPwd=passPwd>0THEN
SETflag=0;
RETURNflag;
ELSE
RETURNflag;
ENDIF;
END$$

delimiter;

4 个解决方案

#1


错误提示是什么?
无法创建存储过程?还是无法执行?或者执行结果与预期不一致?

问题说明越详细,回答也会越准确!参见如何提问。( 提问的智慧)

更多相关文章

  1. JavaAPI中的<T>和<E>分别代表什么?

随机推荐

  1. android 7.0 ,6.0本地多语言切换失效
  2. 小技巧及总结
  3. Android简单注册表单
  4. Android studio 遇到Android SDK : Error
  5. android 录像和拍照功能
  6. Android 单选按钮Radio的使用
  7. Android布局属性全面剖析
  8. scrollView嵌套recyclerView 显示不全
  9. Android sqlite
  10. EditText设置键盘操作