当前位置:网站首页>MySQL stored procedure
MySQL stored procedure
2022-06-26 19:37:00 【yly. py】
Defining variables
SET @username = ‘yly’;
Defined function
DROP FUNCTION IF EXISTS select_by;
DELIMITER //
CREATE FUNCTION select_by(INT(10) user_id)
RETURNS VARCHAR(25)
DETERMINISTIC # Whether there is certainty -> Whether the multiple execution results are the same
CONTAINS SQL # Does it include sql
READS SQL DATA # Just read sql data , No modification
# If you do not add the above restrictions, an error will be reported
BEGIN
RETURN (SELECT username FROM sys_user su WHERE su.user_id=user_id);
END //
DELIMITER ;
Call function
SELECT select_by(2022);
Define stored procedures
-- in
DROP PROCEDURE IF EXISTS select_user_by_username;
DELIMITER $$
CREATE PROCEDURE select_user_by_username(IN username VARCHAR(20)) -- IN Enter the reference OUT The ginseng INOUT Will do
BEGIN
SELECT * FROM sys_user su
WHERE su.username=username;
END $$
DELIMITER ;
-- out
DROP PROCEDURE IF EXISTS select_user_by_username;
DELIMITER $$
CREATE PROCEDURE select_user_by_username(IN username VARCHAR(20),OUT userdata VARCHAR(40)) -- IN Enter the reference OUT The ginseng INOUT Will do
BEGIN
SELECT su.username INTO userdata
FROM sys_user su
WHERE su.username=username;
END $$
DELIMITER ;
Calling stored procedure
-- 1
CALL select_user_by_username('yly');
-- 2
SET @username = '';
CALL select_user_by_username('yly',@username);
SELECT @username;
View stored procedures
-- 1
-- Create information
SHOW CREATE PROCEDURE select_user_by_username;
SHOW CREATE FUNCTION select_by;
-- State information
SHOW PROCEDURE STATUS LIKE '';
SHOW FUNCTION STATUS LIKE '';
--2 from information_schema.Routines View the information of stored procedures and functions in the table
SELECT * FROM information_schema.Routines
WHERE ROUTINE_NAME='select_user_by_username' AND ROUTINE_TYPE='PROCEDURE';
SELECT * FROM information_schema.Routines
WHERE ROUTINE_NAME='select_by' AND ROUTINE_TYPE='FUNCTION';
-- modify
ALTER PROCEDURE select_user_by_username
COMMENT ' adopt username Query the user ';
-- Delete
DROP PROCEDURE IF EXISTS select_user_by_username;
## mysql Variable
mysql System variables
-- overall situation conversation
-- Look at the system variables
SHOW GLOBAL VARIABLES LIKE 'admin_%';
SHOW SESSTION VARIABLES LIKE 'character_%';
-- View the specified system variable
SELECT @@global.max_connections;
-- modify
SET @@global.max_connections = 124;
SET GLOBAL max_connections = 123;
-- The global system variable is valid for the current database instance , Once the restart mysql service , It will fail. ;
mysql User variables
-- Defining variables
-- 1
SET @username = '';
SET @username := '';
-- 2
SELECT @username := FROM sys_user;
SELECT username INTO @username := FROM sys_user;
-- Use
SELECT @username;
-- Defining local variables
-- local variable Use DECLARE Statement
-- Only in PROCEDURE, FUNCTION Use in ;
-- BEGIN First line
-- Declaration format
DECLARE username VARCHAR(30) '';
DELIMITER $$
CREATE PROCEDURE `test_var`()
BEGIN
DECLARE username VARCHAR(20); -- If not specified, it will be empty
SELECT username INTO username FROM sys_user;
SELECT username;
END;
$$
DELIMITER ;
Define errors and handlers
Define error conditions
DECLARE '' /*error*/ CONDITION FOR ''/*error_code*/;
DECLARE Field_Not_Be_NULL CONDITION FRO 1048;
DECLARE Field_Not_Be_NULL CONDITION FRO SQLSTATE '1048';
Define handler
DECLARE EXIT/**/ HANDLER FRO Field_Not_Be_NULL SET @INFO = 'ERROR';
if
-- IF(a,b,c) amount to a ? b : c
DROP PROCEDURE IF EXISTS test_var;
DELIMITER $$
BEGIN
DECLARE username VARCHAR(20);
SELECT su.username INTO username FROM sys_user su WHERE su.user_id=2022;
IF username = 'yly'
THEN SET username='';
ELSEIF username='hello'
THEN SET username='123456';
ELSE SET username='hhhhh';
END IF;
SELECT username;
END;
$$
DELIMITER ;
case
DROP PROCEDURE IF EXISTS test_var;
DELIMITER $$
CREATE PROCEDURE `test_var`()
BEGIN
DECLARE username VARCHAR(20);
SELECT su.username INTO username FROM sys_user su WHERE su.user_id=2022;
-- CASE username
-- when 'yly3' THEN SET username='';
-- When 'hello' THEN SET username='123456';
-- Else SET username='else';
-- end case;
CASE
WHEN LENGTH(username)>4 THEN SET username='';
WHEN LENGTH(username)>1 THEN SET username='123456';
ELSE SET username='else';
END CASE;
SELECT username;
END;
$$
DELIMITER ;
loop while repeat
loop It feels like for equally
DROP PROCEDURE IF EXISTS test_loop;
DELIMITER $$
CREATE PROCEDURE `test_loop`()
BEGIN
DECLARE username VARCHAR(20);
DECLARE `count` INT(10) DEFAULT 0;
SELECT su.username INTO username FROM sys_user su WHERE su.user_id=2022;
loop_label:LOOP
SET `count` = `count`+1;
IF `count` >= 10 THEN LEAVE /* Out of the loop */ loop_label;
END IF;
END LOOP loop_label;
SELECT username,`count`;
END;
$$
DELIMITER ;
while It feels like while You can also add label
DROP PROCEDURE IF EXISTS test_while;
DELIMITER $$
CREATE PROCEDURE `test_while`()
BEGIN
DECLARE username VARCHAR(20);
DECLARE `count` INT(10) DEFAULT 0;
SELECT su.username INTO username FROM sys_user su WHERE su.user_id=2022;
WHILE `count` < 10 DO
SET `count` = `count`+1;
END WHILE
SELECT username,`count`;
END;
$$
DELIMITER ;
repeat It feels like do while
DROP PROCEDURE IF EXISTS test_while;
DELIMITER $$
CREATE PROCEDURE `test_while`()
BEGIN
DECLARE username VARCHAR(20);
DECLARE `count` INT(10) DEFAULT 0;
SELECT su.username INTO username FROM sys_user su WHERE su.user_id=2022;
REPEAT
SET `count` = `count`+1;
UNTIL `count` >= 10
END REPEAT;
SELECT username,`count`;
END;
$$
DELIMITER ;
LEAVE and ITERATE image continue
-- LEAVE
DROP PROCEDURE IF EXISTS test_while;
DELIMITER $$
CREATE PROCEDURE `test_while`()
test:BEGIN
DECLARE username VARCHAR(20);
DECLARE `count` INT(10) DEFAULT 0;
SELECT su.username INTO username FROM sys_user su WHERE su.user_id=2022;
REPEAT
SET `count` = `count`+1;
UNTIL `count` >= 10
END REPEAT;
LEAVE test; -- It will stop here
SELECT username,`count`;
END;
$$
DELIMITER ;
-- ITERATE
DROP PROCEDURE IF EXISTS test_loop;
DELIMITER $$
CREATE PROCEDURE `test_loop`()
BEGIN
DECLARE username VARCHAR(20);
DECLARE `count` INT(10) DEFAULT 0;
SELECT su.username INTO username FROM sys_user su WHERE su.user_id=2022;
loop_label:LOOP
SELECT username,`count`;
SET `count` = `count`+1;
IF `count` >= 10 THEN LEAVE /* Out of the loop */ loop_label;
END IF;
IF `count` < 3 THEN SELECT 100; ITERATE loop_label;
END IF;
SET `count` = `count`+100;
END LOOP loop_label;
SELECT username,`count`;
END;
$$
DELIMITER ;
CALL test_loop();
The cursor
边栏推荐
- NFTGameFi链游系统开发详解方案丨链游系统开发原理解析
- 【Kubernetes】Kubernetes 原理剖析与实战应用(更新中)
- 转:苹果CEO库克:伟大的想法来自不断拒绝接受现状
- Xlua get button registration click event of ugui
- wm_ Concat() and group_ Concat() function
- String string is converted to jsonarray and parsed
- 【Mysql系列】工作常用sql集锦(持续更新)
- IK word breaker
- 問題解决:虛擬機無法複制粘貼文件
- Commodity seckill system
猜你喜欢
随机推荐
On the escape of inequality value
Installation and use of logstash
Summary of knowledge points
Redis单点登陆系统+投票系统
Good thing recommendation: mobile terminal development security tool
String string is converted to jsonarray and parsed
威胁猎人必备的六个威胁追踪工具
自己创建一个时间拦截器
项目实战六:分布式事务-Seata
Reading notes: process consulting III
find_ path、find_ Library memo
品达通用权限系统(Day 1~Day 2)
DAPP丨LP单双币流动性质押挖矿系统开发原理分析及源码
Redis single sign on system + voting system
开户可以在网上开么?能安全吗?
mysql的充值问题
Tiktok practice ~ sharing module ~ copy short video link
Introduction to single chip microcomputer one-on-one learning strategy, independent development program immediately after reading
Database SQL statement writing
Résumé des points de connaissance









