MySQL存储过程是一种在数据库中存储的预编译SQL语句集合,可以通过调用存储过程名来执行,存储过程中可以包含参数,这些参数可以在调用存储过程时传递值,存储过程可以返回一个或多个参数,这些参数可以是输出参数、输入/输出参数或者只读参数。
1、输出参数
输出参数是存储过程中用于返回值的参数,在创建存储过程时,需要指定输出参数的类型和名称,在调用存储过程时,需要为输出参数提供值。
创建存储过程示例:
DELIMITER // CREATE PROCEDURE GetEmployeeCount(IN department_id INT, OUT employee_count INT) BEGIN SELECT COUNT(*) INTO employee_count FROM employees WHERE department_id = department_id; END // DELIMITER ;
调用存储过程示例:
SET @department_id = 1; SET @employee_count = 0; CALL GetEmployeeCount(@department_id, @employee_count); SELECT @employee_count;
2、输入/输出参数
输入/输出参数是既可以作为输入也可以作为输出的参数,在创建存储过程时,需要指定输入/输出参数的类型和名称,在调用存储过程时,可以为输入/输出参数提供值,也可以从存储过程中获取值。
创建存储过程示例:
DELIMITER // CREATE PROCEDURE UpdateEmployeeSalary(IN employee_id INT, IN new_salary DECIMAL(10, 2), OUT updated_salary DECIMAL(10, 2)) BEGIN UPDATE employees SET salary = new_salary WHERE id = employee_id; SELECT salary INTO updated_salary FROM employees WHERE id = employee_id; END // DELIMITER ;
调用存储过程示例:
SET @employee_id = 1; SET @new_salary = 5000.00; SET @updated_salary = 0.00; CALL UpdateEmployeeSalary(@employee_id, @new_salary, @updated_salary); SELECT @updated_salary;
3、只读参数
只读参数是存储过程中用于接收值但不返回值的参数,在创建存储过程时,需要指定只读参数的类型和名称,在调用存储过程时,可以为只读参数提供值。
创建存储过程示例:
DELIMITER // CREATE PROCEDURE GetEmployeeName(IN employee_id INT, OUT first_name VARCHAR(50), OUT last_name VARCHAR(50)) BEGIN SELECT first_name, last_name INTO first_name, last_name FROM employees WHERE id = employee_id; END // DELIMITER ;
调用存储过程示例:
SET @employee_id = 1; SET @first_name = ''; SET @last_name = ''; CALL GetEmployeeName(@employee_id, @first_name, @last_name); SELECT @first_name, @last_name;
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/640093.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复