Mysql中使用存储过程返回查询多个表的数据信息
-- 测试手机号
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中使用存储过程返回查询多个表的数据信息的更多相关文章
- MySQL中的存储过程和函数使用详解
一.对待存储过程和函数的态度 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在MySQL中的存储过程移植到sqlsever上就不一定可以用了. 2.调试麻烦,在db中报一个错误和在 ...
- 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...
- MySQL中的存储过程、函数与触发器
一.对待存储过程和函数的态度 优点: 1.存储过程只在创建时进行编译,sql语句则每次执行都需要编译.能提高数据库执行速度. 2.简单复杂操作结合事物一起封装. 3.复用性高. 4.安全性高,可指定存 ...
- MySQL中的存储过程、游标和存储函数
MySQL中的存储过程首先来看两个问题: 1.什么是存储过程? 存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存 ...
- mysql 中创建存储过程
mysql中创建存储过程和存储函数虽相对其他的sql语言相对复杂,但却功能强大,存储过程和存储函数更像是一种sql语句中特定功能的一种封装,这种封装可以大大简化外围调用语句的复杂程度. 首先以表emp ...
- mysql根据逗号分割的字符串去关联查询另外一个表的数据
1.说明 在做显示数据的时候,一个字段会存那种逗号分割的字符串,那如何去根据逗号分割字符串去查询另一个表的数据呢? 首先我们查看一下需要显示的数据 select * from company wher ...
- Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点
Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...
- 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...
- MySQL中的存储过程和函数
存储过程和函数 简单的说,存储过程就是一条或者多条SQL语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如何创建存储过程和存储函数,以及如何调用.查看.修改.删除存储过程和存储函 ...
随机推荐
- 创建带maven的javaWeb项目
1File——Maven——maven-archtypes-webapp GroupId:表示项目组织唯一标识符 ArtifacrId:表示项目唯一标识符 例如项目名称 Version是项目版本 这三 ...
- 数据结构—队列(Queue)
队列的定义--Queue 队列是只允许在表的队尾插入,在表的队头进行删除.队列具有先进先出的特性(FIFO, First In First Out). 队列提供了下面的操作 q.empty() 如果队 ...
- How to Create a Perl Based Custom Monitor on NetScaler
How to Create a Perl Based Custom Monitor on NetScaler https://support.citrix.com/article/CTX227727 ...
- 【题解】HAOI2008硬币购物
1A什么的实在是太开心啦~~洛谷P1450 这道题目主要是考察对于容斥原理的掌握. 首先,注意到如果不存在有关硬币数量的限制而单纯询问方案的总数,就是一个简单的完全背包.这个思路提醒我们:如果能够求出 ...
- 洛谷 P4168 [Violet]蒲公英 解题报告
P4168 [Violet]蒲公英 题目背景 亲爱的哥哥: 你在那个城市里面过得好吗? 我在家里面最近很开心呢.昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多 ...
- C++——设计与演化——读书笔记
<<c++设计与演化>>1.c++的保护模式来自于访问权限许可和转让的概念; 初始化和赋值的区分来自于转让能力的思考; c++的const概念是从读写保护机制中演化出来. 2. ...
- volatile的原理分析
前言:Volatile作为一个多线程开发中的强有力的轻量级的线程协助工具,在实际编程中随处可见,它比synchronized更加轻量和方便,消耗的资源更少,了解Volatile对后面了解多线程有很重要 ...
- HDU 1059 完全背包
Dividing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- P2764 最小路径覆盖问题
题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开 ...
- HDU 多校对抗 F Naive Operations
Naive Operations Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 502768/502768 K (Java/Other ...