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语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如何创建存储过程和存储函数,以及如何调用.查看.修改.删除存储过程和存储函 ...
随机推荐
- C++中getline()函数简介
有时我们希望能在最终得到的字符中保留输入时的空白符,这时应该用getline()函数代替原来的>>运算符. 下面是使用getline读取一整行的示例代码: #include<iost ...
- 搭建Hadoop环境(二)
摘要:近来又用到了Linux系统,所以就又新装了一个虚拟机和CentOS 6.4来用,搞开发的程序猿们可能都知道,在现在的很多企业中,生产环境大多都是Linux服务器,并且用的比较多的大都是CentO ...
- Linux之JDK在线安装及配置
1.查找java相关得列表 yum -y list java*2.在线安装 yum -y install java-1.6.0-openjdk*3.查看安装目录 ls -l /usr/lib/jv ...
- 一个类似植物大战僵尸的python源码
# 1 - Import library import pygame from pygame.locals import * import math import random # 2 - Initi ...
- slf4j使用log4j学习笔记
一,介绍 SLF4J 简单日记门面(Facade)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现. Loggi ...
- NIO--2-代码
package com.study.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.ni ...
- [剑指Offer] 41.和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- [Java] 为什么要定义接口
摘自:https://www.douban.com/note/61810488/ 通俗的讲,就是为了降低耦合度. 一个很搞笑的例子: 看看下面的程序: 一个学校里边,有两种人:学生.老师.他们都要吃饭 ...
- Delphi xe7组件和控件的安装方法
暂时我所遇到的所有控件安装方法大体与下面两种相同. 若有不同大家提出来,一起想办法解决. .dproj格式的组件安装方法: raise组件 安装详细步骤如下: 一.设置搜索路径1. 将本包中的文件连同 ...
- 【bzoj5070】危险的迷宫 费用流
题目描述 JudgeOnline/upload/201710/55.doc 输入 第一行是两个整数A与B(1≤A,B≤10),中间用空格分隔,表示该迷宫是A行B列的. 第2行至第A+1行,每行有B个1 ...