mysql存储过程例子

admin 33 0

MySQL存储过程是一个预编译的SQL语句,可以在数据库中进行存储和调用,下面是一个简单的MySQL存储过程示例,它接受一个输入参数,并返回一个结果。

DELIMITER //

CREATE PROCEDURE GetEmployee(IN employeeId INT)
BEGIN
    SELECT * FROM employees WHERE id = employeeId;
END //

DELIMITER ;

上面的存储过程名为GetEmployee,它接受一个整数类型的输入参数`employeeId`,在存储过程的定义中,`BEGIN`和`END`之间是存储过程的主体部分,在这个例子中,主体部分只有一个`SELECT`语句,它从`employees`表中选择与输入参数`employeeId`匹配的行。

在定义存储过程之前,需要使用`DELIMITER`语句将定界符从默认的分号(`;`)更改为`//`,这是因为在存储过程中可能需要包含分号,因此需要将定界符更改为另一个字符,以避免在存储过程中出现语法错误,在存储过程定义结束后,需要再次使用`DELIMITER`语句将定界符恢复为分号(`;`)。

要调用这个存储过程,可以使用以下语句:

CALL GetEmployee(123);

这将调用存储过程GetEmployee,并将参数值123传递给输入参数`employeeId`,存储过程将返回与ID为123的雇员相关的行。

除了简单的查询之外,存储过程还可以执行更复杂的操作,例如更新数据、插入数据、删除数据等,下面是一个更复杂的MySQL存储过程示例,它接受一个输入参数,并更新一个表中的数据:

DELIMITER //

CREATE PROCEDURE UpdateSalary(IN employeeId INT, IN newSalary DECIMAL(10, 2))
BEGIN
    UPDATE employees SET salary = newSalary WHERE id = employeeId;
END //

DELIMITER ;

上面的存储过程名为UpdateSalary,它接受两个输入参数:`employeeId`和`newSalary`,在存储过程的主体部分,使用`UPDATE`语句更新`employees`表中与输入参数`employeeId`匹配的行的薪水为输入参数`newSalary`的值。

CALL UpdateSalary(123, 5000.00);

这将调用存储过程UpdateSalary,并将参数值123和5000.00分别传递给输入参数`employeeId`和`newSalary`,存储过程将更新ID为123的雇员的薪水为5000.00。

希望这个例子能够帮助你了解MySQL存储过程的基本用法,在实际应用中,存储过程可以更加复杂和强大,可以根据具体需求进行编写和调用。