-- 测试手机号
call P_Base_CheckLogin(''); -- 测试登录名
call P_Base_CheckLogin('sch000001') -- 测试身份证号
call P_Base_CheckLogin('') -- 测试学生手机号
call P_Base_CheckLogin('') drop PROCEDURE IF EXISTS P_Base_CheckLogin;
create procedure P_Base_CheckLogin(v_loginName VARCHAR())
label:
BEGIN
-- 手机号匹配
SELECT v_loginName REGEXP "^[1][35678][0-9]{9}$" into @checkResult;
if @checkResult= then
select p.person_id,p.identity_id,p.person_name into @person_id,@identity_id,@person_name from t_base_person p where p.tel=v_loginName limit ;
if @person_id is not null THEN
select l.login_name,l.login_password into @login_name,@login_password from t_sys_loginperson l where l.person_id=@person_id and l.IDENTITY_ID=@identity_id;
select @login_name as USER_NAME,@person_id as PERSON_ID,@identity_id as IDENTITY_ID ,@person_name as REAL_NAME,@login_password as PASSWORD;
LEAVE label;
end if; -- 学生的手机号匹配
select p.student_id, as identity_id into @person_id,@identity_id from t_base_student as p where p.STU_TEL=v_loginName limit ;
if @person_id is not null THEN
select l.login_name,l.login_password into @login_name,@login_password from t_sys_loginperson l where l.person_id=@person_id and l.IDENTITY_ID=@identity_id;
select @login_name as USER_NAME,@person_id as PERSON_ID,@identity_id as IDENTITY_ID ,@person_name as REAL_NAME,@login_password as PASSWORD;
LEAVE label;
end if;
end if; -- 身份证号匹配
select f_base_check_id_number(v_loginName) into @checkResult;
if @checkResult= then
select person_id,identity_id,person_name into @person_id,@identity_id,@person_name from t_base_person p where p.IDENTITY_NUM=v_loginName limit ;
if @person_id is not null THEN
select l.login_name,l.login_password into @login_name,@login_password from t_sys_loginperson l where l.person_id=@person_id and l.IDENTITY_ID=@identity_id;
select @login_name as USER_NAME,@person_id as PERSON_ID,@identity_id as IDENTITY_ID ,@person_name as REAL_NAME,@login_password as PASSWORD;
LEAVE label;
end if;
end if; -- 正常登录名查询
select l.login_name,person_id,identity_id,l.person_name,l.login_password into @login_name,@person_id,@identity_id,@person_name,@login_password from t_sys_loginperson l where l.login_name=v_loginName limit ;
if @person_id is not null THEN
select @login_name as USER_NAME,@person_id as PERSON_ID,@identity_id as IDENTITY_ID ,@person_name as REAL_NAME,@login_password as PASSWORD;
LEAVE label;
end if;
END;
drop function if EXISTS f_base_check_id_number;

CREATE  FUNCTION `f_base_check_id_number`(`idnumber` CHAR())
RETURNS enum('','')
LANGUAGE SQL
NOT DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE status ENUM('','') default '';
DECLARE verify CHAR();
DECLARE sigma INT;
DECLARE remainder INT; IF length(idnumber) = THEN
set sigma = cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) *
+cast(substring(idnumber,,) as UNSIGNED) * ;
set remainder = MOD(sigma,);
set verify = (case remainder
when then '' when then '' when then 'X' when then ''
when then '' when then '' when then '' when then ''
when then '' when then '' when then '' else '/' end
); END IF; IF right(idnumber,) = verify THEN
set status = '';
END IF; RETURN status; END
SELECT PERSON_ID,IDENTITY_ID,PERSON_NAME as REAL_NAME,LOGIN_NAME as USER_NAME FROM
(
select p.person_id,p.identity_id,p.person_name,p.tel as inputname,l.login_name from t_base_person p join t_sys_loginperson l on p.person_id= l.person_id and p.identity_id= l.identity_id
union
select p.person_id,p.identity_id,p.person_name,p.IDENTITY_NUM as inputname,l.login_name from t_base_person p join t_sys_loginperson l on p.person_id= l.person_id and p.identity_id= l.identity_id
union
select l.person_id,l.identity_id,l.person_name,s.STU_TEL as inputname,l.login_name from t_base_student s join t_sys_loginperson l on s.student_id = l.person_id and l.identity_id =
union
select person_id,identity_id,l.person_name,l.login_name as inputname,l.login_name from t_sys_loginperson l
) t WHERE t.inputname = ''

Mysql中使用存储过程返回查询多个表的数据信息的更多相关文章

  1. MySQL中的存储过程和函数使用详解

    一.对待存储过程和函数的态度 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在MySQL中的存储过程移植到sqlsever上就不一定可以用了. 2.调试麻烦,在db中报一个错误和在 ...

  2. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  3. MySQL中的存储过程、函数与触发器

    一.对待存储过程和函数的态度 优点: 1.存储过程只在创建时进行编译,sql语句则每次执行都需要编译.能提高数据库执行速度. 2.简单复杂操作结合事物一起封装. 3.复用性高. 4.安全性高,可指定存 ...

  4. MySQL中的存储过程、游标和存储函数

    MySQL中的存储过程首先来看两个问题: 1.什么是存储过程? 存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存 ...

  5. mysql 中创建存储过程

    mysql中创建存储过程和存储函数虽相对其他的sql语言相对复杂,但却功能强大,存储过程和存储函数更像是一种sql语句中特定功能的一种封装,这种封装可以大大简化外围调用语句的复杂程度. 首先以表emp ...

  6. mysql根据逗号分割的字符串去关联查询另外一个表的数据

    1.说明 在做显示数据的时候,一个字段会存那种逗号分割的字符串,那如何去根据逗号分割字符串去查询另一个表的数据呢? 首先我们查看一下需要显示的数据 select * from company wher ...

  7. Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点

    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...

  8. 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表

    原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...

  9. MySQL中的存储过程和函数

    存储过程和函数 简单的说,存储过程就是一条或者多条SQL语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如何创建存储过程和存储函数,以及如何调用.查看.修改.删除存储过程和存储函 ...

随机推荐

  1. fckeditor的简单使用

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEnco ...

  2. Java IO 之 RandomAccessFile 操作文件内容

    RandomAccessFile类实现对文件内容的随机读写 文件内容的随机操作,重难点在于字符操作,具体查看API package org.zln.io.file; import java.io.IO ...

  3. COGS 497——奶牛派对

    奶牛派对 我们发现每头牛需要走的路程即为它到x的最短路+x到它的最短路. 转化: 于是这道题变成了一道典型的单源最短路问题,只需求出每个点到x的最短路dl,以及从x到此点的最短路d2,然后去找max( ...

  4. [UOJ#351]新年的叶子

    [UOJ#351]新年的叶子 试题描述 躲过了AlphaGo 之后,你躲在 SingleDog 的长毛里,和它们一起来到了AlphaGo 的家.此时你们才突然发现,AlphaGo 的家居然是一个隐藏在 ...

  5. BZOJ 1098: [POI2007]办公楼biu 链表

    求补图连通块,用链表优化,势能O(n+m) #include<cstdio> #include<cstring> #include<iostream> #inclu ...

  6. 支持jsonP的Controller写法

    支持jsonP的Controller写法 package com.taotao.sso.controller; import org.apache.commons.lang3.StringUtils; ...

  7. 压缩跟踪Compressive Tracking

    好了,学习了解了稀疏感知的理论知识后,终于可以来学习<Real-Time Compressive Tracking>这个paper介绍的感知跟踪算法了.自己英文水平有限,理解难免出错,还望 ...

  8. oracle的sequece的使用(主键自增长)

    在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方. 1.Create Sequence (注释:你需要有CREATE S ...

  9. Ubuntu 12.04更新源(转)

    1.首先备份Ubuntu12.04源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表) 2.修改更新源 ...

  10. 动态规划&字符串:最长公共子串

    还是直接上转移方程: 动规只能解决O(n^2)的最长公共子串问题 使用后缀数组或者SAM可以高效地解决这个问题 所以,对于这个问题,动规的代码就不给出了 直接给出SAM的实现,也为以后学习SAM打下一 ...