MySQL存储过程(带输入参数)实例

第一次写存储过程,参考了《SQL完全手册》,写了一个涉及到三张表的存储过程,简单实现了往一张表插入数据,修改另外两张表的功能。MySQL的语法和其他数据库语法有区别,写的过程需要特别注意。还有就是";"的问题,需要用DELIMITER //转义,因为在MySQL中,DELIMITER本身就是“;”的意思,具体这里不做详细说明。
DROP TABLE IF EXISTS `CUSTOMERS`;
create table CUSTOMERS (
	`id` int(11) NOT NULL AUTO_INCREMENT, -- ID
	`cust_num` int(11),-- 客户编号
	`company` varchar(20),-- 公司名称
	`cust_rep` int(11),-- 雇员
	`credit_limit` decimal(16,2),-- 信用限额
	PRIMARY KEY(`id`)
);

DROP TABLE IF EXISTS `SALESREPS`;
CREATE TABLE `SALESREPS`(
	`id` int(11) NOT NULL AUTO_INCREMENT,-- ID
	`quota` decimal(16,2),-- 销售目标
	`empl_num` int(11),
PRIMARY KEY(`id`)
);
INSERT INTO `SALESREPS`(ID,QUOTA,EMPL_NUM) VALUES(1,20000.00,103);

DROP TABLE IF EXISTS `OFFICES`;
CREATE TABLE `OFFICES`(
	`id` int(11) NOT NULL AUTO_INCREMENT,
		
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL 存储过程是一种封装了 SQL 语句的代码块,可以在 MySQL 数据库中创建、存储和调用。存储过程可以接受输入参数、输出参数和返回值,可以使用分支、循环、异常处理等复杂的编程语言结构,适用于处理复杂的数据操作和业务逻辑。 下面是一个简单的 MySQL 存储过程实例: ```mysql DELIMITER // CREATE PROCEDURE sp_get_customer(IN customer_id INT, OUT customer_name VARCHAR(50)) BEGIN SELECT customer_name INTO customer_name FROM customers WHERE customer_id = customer_id; END // DELIMITER ; ``` 这个存储过程名为 `sp_get_customer`,有一个输入参数 `customer_id` 和一个输出参数 `customer_name`。存储过程的作用是根据传入的 `customer_id` 询 `customers` 表中对应的客户名,并将其赋值给输出参数 `customer_name`。 使用以下语句调用这个存储过程: ```mysql CALL sp_get_customer(1, @customer_name); SELECT @customer_name; ``` 这个语句会询 `customers` 表中 `customer_id` 为 1 的客户名,并将其赋值给变量 `@customer_name`,然后输出变量的值。 存储过程可以简化复杂的数据操作和业务逻辑,提高数据库的性能和安全性。但是,存储过程也有一些限制和注意事项: 1. 存储过程的语法比较复杂,需要熟悉 MySQL 的编程语言和语法规则。 2. 存储过程可能会影响数据库的性能和可维护性,应该谨慎使用和设计。 3. 存储过程可能会影响数据库的安全性,应该限制存储过程的访问权限和操作权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值