mysql 编写存储过程(带输入参数和默认值:'计算机系')
时间: 2023-07-08 09:18:40 浏览: 59
下面是一个简单的MySQL存储过程示例,它带有一个输入参数并设置了默认值:
```mysql
DELIMITER //
CREATE PROCEDURE get_students_by_dept(
IN in_dept_name VARCHAR(255)
)
BEGIN
IF in_dept_name IS NULL THEN
SET in_dept_name = '计算机系';
END IF;
SELECT * FROM students WHERE dept_name = in_dept_name;
END //
DELIMITER ;
```
在上面的存储过程中,我们定义了一个名为get_students_by_dept的存储过程,它带有一个名为in_dept_name的输入参数。存储过程的主体部分使用SELECT语句从students表中选择部门名称等于输入参数的所有学生记录。同时,使用 IF语句来检查输入参数是否为空,如果为空,则将其设置为默认值'计算机系'。
使用该存储过程的语法如下:
```mysql
CALL get_students_by_dept('某个部门名称');
```
如果没有指定输入参数,则将使用默认值'计算机系',如下所示:
```mysql
CALL get_students_by_dept(NULL);
```
相关问题
mysql存储过程参数默认值
在 MySQL 存储过程中,可以为参数指定默认值,这样在调用存储过程时,如果没有为该参数传递值,则会使用默认值。
例如,定义一个带有默认参数值的存储过程:
```
CREATE PROCEDURE my_proc(IN p1 INT, IN p2 VARCHAR(50) DEFAULT 'default_value')
BEGIN
-- 存储过程逻辑
END;
```
在调用该存储过程时,如果不传递第二个参数 p2,则会自动使用默认值 'default_value'。
调用示例:
```
CALL my_proc(123); -- p2 使用默认值 'default_value'
CALL my_proc(123, 'new_value'); -- p2 使用传递的值 'new_value'
```
MYSQL存储过程带参数
下面是一个示例MYSQL存储过程带参数的语法:
```mysql
CREATE PROCEDURE procedure_name(IN parameter1 datatype1, IN parameter2 datatype2, ..., IN/OUT/OUT parameterN datatypeN)
BEGIN
-- 这里是存储过程的主体代码
END;
```
其中:
- `procedure_name` 是你要创建的存储过程的名称。
- `IN parameter1 datatype1, IN parameter2 datatype2, ..., IN/OUT/OUT parameterN datatypeN` 是参数列表。每个参数都指定了参数的名称、数据类型和方向(输入、输出或输入输出)。IN 表示输入参数,OUT 表示输出参数,INOUT 表示输入输出参数。
- 存储过程的主体代码在 BEGIN 和 END 之间。你可以在这里编写任何 SQL 语句,包括 SELECT、INSERT、UPDATE、DELETE 等。
下面是一个示例存储过程,它带有两个输入参数和一个输出参数:
```mysql
CREATE PROCEDURE get_employee_salary(IN employee_id INT, IN year INT, OUT salary DECIMAL(10, 2))
BEGIN
SELECT SUM(amount) INTO salary
FROM salary_table
WHERE employee_id = employee_id
AND YEAR(date) = year;
END;
```
这个存储过程接受两个输入参数:`employee_id` 和 `year`。它还定义了一个输出参数 `salary`,用于存储查询结果。存储过程的主体代码使用 `SUM` 函数计算给定员工在给定年份内的总薪资,并将结果存储在 `salary` 参数中。