存储过程的使用

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值