标签:CASE 存储 END SQL WHEN ELSE 简单 过程 id
经常写重复性的sql,所以写了一个存储过程查询数据
-- 查询单个人员任职信息
CREATE DEFINER=`root`@`localhost` PROCEDURE `SingleStaffInfo`(
IN sid VARCHAR ( 36 ),
cname VARCHAR ( 100 ),
ccode VARCHAR ( 100 ),
tenantid VARCHAR ( 36 ),
mobile VARCHAR ( 50 ),
user_id VARCHAR ( 36 ),
objid VARCHAR ( 36 )
)
BEGIN
SET @staffid = (
IF
(
@sid <> '',
@sid,
(
SELECT
id
FROM
bd_staff
WHERE
1 = 1
AND ( CASE WHEN @cname <> '' THEN NAME = @cname ELSE 1 = 1 END )
AND ( CASE WHEN @ccode <> '' THEN CODE = @ccode ELSE 1 = 1 END )
AND ( CASE WHEN @tenantid <> '' THEN tenantid = @tenantid ELSE 1 = 1 END )
AND ( CASE WHEN @mobile <> '' THEN mobile = @mobile ELSE 1 = 1 END )
AND ( CASE WHEN @user_id <> '' THEN user_id = @user_id ELSE 1 = 1 END )
AND ( CASE WHEN @objid <> '' THEN objid = @objid ELSE 1 = 1 END )
)
)
);
SELECT
*
FROM
bd_staff
WHERE
id = @staffid;
SELECT
*
FROM
bd_staff_job
WHERE
staff_id = @staffid;
SELECT
*
FROM
bd_staff_mainjob
WHERE
staff_id = @staffid;
END
涉及语法
存储过程
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement
[begin_label:] BEGIN
[statement_list]
……
END [end_label]
IF表达式
IF ( expr1, expr2, expr3 );
----------------------
IF
expr1 THEN
expr2 [ ELSE expr3 ]
END IF;
case表达式
CASE var1
WHEN var2 THEN expr1;
[ WHEN var3 THEN expr2;]
[ ELSE expr3;]
END [ CASE ]
-- ------------------
CASE
WHEN expr1 THEN expr2;
[ WHEN expr3 THEN expr4;]
[ ELSE expr5;]
END [ CASE]
标签:CASE,存储,END,SQL,WHEN,ELSE,简单,过程,id 来源: https://blog.csdn.net/ddddwy/article/details/120622819
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。