MySQL存储过程参数的用法及说明
2023-06-13 09:20:05 时间
输入参数(IN):在调用存储过程中传递数据给存储过程的参数(在调用的存储过程必须具有实际值的变量 或者 字面值)
DELIMITER $$
CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR,IN `p_call` VARCHAR)
BEGIN
INSERT INTO employees(`name`,`call`)
VALUES(`p_name`,`p_call`);
END $$
DELIMITER $$
CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR(64),IN `p_call` VARCHAR(64))
BEGIN
INSERT INTO employees(`name`,`call`)
VALUES(`p_name`,`p_call`);
END $$
DELIMITER $$
CREATE PROCEDURE procedure_test5(IN `p_id` INT(64),OUT `p_name` VARCHAR(64))
BEGIN
SELECT `name` INTO `p_name` FROM employees WHERE id=`p_id`;
END $$
CALL procedure_test5( 2 ,@e_name)
SELECT @e_name FROM DUAL
DELIMITER $$
CREATE PROCEDURE procedure_test6(INOUT str VARCHAR(64))
BEGIN
把你传进来的值作为条件,查询出的结果再重新赋值给 str 返回出去
这里的 str 既当输入参数,也当输出参数
SELECT `name` INTO str FROM employees WHERE id=str;
END $$
CALL procedure_test6(@e_name)
SELECT @e_name FROM DUAL
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL存储过程参数的用法及说明
细节注意:下面的存储过程创建会报错,他的类型以及类型长度需要和创建表字段的类型和类型长度一致
创建一个存储过程:添加一个员工信息DELIMITER $$
CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR,IN `p_call` VARCHAR)
BEGIN
INSERT INTO employees(`name`,`call`)
VALUES(`p_name`,`p_call`);
END $$
正确写法
创建一个存储过程:添加一个员工信息DELIMITER $$
CREATE PROCEDURE procedure_test4(IN `p_name` VARCHAR(64),IN `p_call` VARCHAR(64))
BEGIN
INSERT INTO employees(`name`,`call`)
VALUES(`p_name`,`p_call`);
END $$
现在来测试一下是否可以调用存储过程并且添加数据进去
先看一下表原来的数据
调用一下存储过程
CALL procedure_test4( 李四 , 321321 )再来看一下结果
例子:
创建一个存储过程:根据id查询出该员工姓名DELIMITER $$
CREATE PROCEDURE procedure_test5(IN `p_id` INT(64),OUT `p_name` VARCHAR(64))
BEGIN
SELECT `name` INTO `p_name` FROM employees WHERE id=`p_id`;
END $$
创建没问题,接下来调用测试一下
SET @e_name=CALL procedure_test5( 2 ,@e_name)
SELECT @e_name FROM DUAL
DELIMITER $$
CREATE PROCEDURE procedure_test6(INOUT str VARCHAR(64))
BEGIN
把你传进来的值作为条件,查询出的结果再重新赋值给 str 返回出去
这里的 str 既当输入参数,也当输出参数
SELECT `name` INTO str FROM employees WHERE id=str;
END $$
创建没问题,接下来测试一下
SET @e_name= 2CALL procedure_test6(@e_name)
SELECT @e_name FROM DUAL
也是没问题的,但在实际开发中 INOUT 建议少用,原因:代码的可读性会变差
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL存储过程参数的用法及说明
相关文章
- MySQL:查看表的存储引擎(mysql查看表的引擎)
- MySQL存储过程编程:深入理解与实践(mysql存储过程编写)
- MySQL中文字段使用指南(mysql字段为中文)
- 完美安装MySQL:精选CMD命令(cmd命令安装mysql)
- Mybatis操作MySQL存储过程实现数据库交互(mybatis调用mysql存储过程)
- MySQL 移植技术:开启新的信息存储之旅(mysql移植)
- MySQL:强大的数据存储和查询工具(mysql的用处)
- 轻松导入数据Dat文件至MySQL数据库(dat导入mysql)
- MySQL存储:二进制数据之家(mysql二进制数据)
- MySQL存储过程中使用变量的简单实现(mysql存储过程变量)
- 密码MySQL:修改密码实战指南(mysql修改)
- MySQL密码:复杂而神秘(复杂的mysql密码)
- MySQL存储过程与表的关系(mysql存储过程表)
- MySQL添加字段注释:让你的数据更清晰(mysql 添加字段注释)
- 深入了解MySQL数据库类型(查看mysql数据库类型)
- 在CMD命令行启动MySQL服务(cmd 中启动mysql)
- MySQL下载指南最佳磁盘存储位置(mysql下载在存哪个盘)
- MySQL实现虚拟主机上传功能(mysql上传虚拟主机)
- MySQL无法存储中文字符解决方案介绍(mysql不能存中文吗)
- MySQL 数据库存储条数的上限(mysql上限存储条数)