SHOW TABLES;
SELECT *
FROM USER;
--
CREATE TABLE emp(
id INT PRIMARY KEY,
NAME VARCHAR(10),
pwd VARCHAR(10),
deptname VARCHAR(10)
)
DROP TABLE emp
SELECT * FROM emp;
-- 创建存储过程(输入参数)
INSERT INTO emp VALUES(1,'bob','1234',2)
DELIMITER $;
CREATE PROCEDURE pro_emp(IN eid INT)
BEGIN
SELECT * FROM emp WHERE id=eid;
END $
--
-- 调用存储过程
CALL pro_emp(1);
DELIMITER $
CREATE PROCEDURE pro_emp_out(OUT str VARCHAR(10))
BEGIN
SET str='这是一个输出参数';
END $
-- @shuchu 相当于定义一个输出会话变量shuchu来接收存储过程的返回值
CALL pro_emp_out(@shuchu);
SELECT @shuchu;
-- 创建存储过程(输入输出参数)
DELIMITER $$
CREATE PROCEDURE pro_emp_inout(INOUT n INT)
BEGIN
-- 查看变量
SELECT n;
-- 设置输出变量为500
SET n=500;
END $
-- 设置输入会话变量为10
SET @n=10;
-- 调用存储过程,参数为刚刚设置的输入变量10
CALL pro_emp_inout(@n)
-- 查询输出变量
SELECT @n;
-- 创建从存储过程if判断
DELIMITER $
CREATE PROCEDURE pro_test_if(
IN num INT,OUT str VARCHAR(15))
BEGIN
IF num=1 THEN
SET str='1111';
ELSEIF num=2 THEN
SET str='2222';
ELSE
SET str='0000';
END IF;
END $
-- 调用存储过程
CALL pro_test_if(4,@str);
SELECT @str;
-- 带循环功能的存储过程
DELIMITER $
CREATE PROCEDURE pro_test_while(
IN num INT,OUT re INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE v INT DEFAULT 0;
WHILE i<num DO
SET v=v+i;
SET i=i+1;
END WHILE;
SET re=v;
END $
-- 调用循环存储过程
CALL pro_test_while(100,@r)
SELECT @r
SELECT * FROM emp;
-- 使用查询的结果作为返回值
DELIMITER $
CREATE PROCEDURE pro_findbyid1(IN eid INT ,OUT vname VARCHAR(10))
BEGIN
SELECT NAME INTO vname FROM emp WHERE id=eid;
END $
DROP PROCEDURE pro_findbyid1
CALL pro_findbyid1(1,@NAME);
SELECT @NAME;
存储过程的使用
最新推荐文章于 2023-09-05 09:13:45 发布