首页 > 数据库 >MySQL存储过程带参和不带参数(转载)

MySQL存储过程带参和不带参数(转载)

时间:2023-07-07 17:25:06浏览次数:51  
标签:存储 uid uname 参数 MySQL 参和不带 my INOUT

笔记:


(1)存储过程的传入参数IN

需求:编写存储过程,传入uid,返回该用户的uname


delimiter $$
create procedure testa(my_uid int)
begin
declare my_uname varchar(32) default '';
select uname into my_uname from users where uid=my_uid;
select my_uname;
end;
$$
delimiter ;

1.传入参数:类型为IN,表示该参数的值必须在调用存储过程时指定,如果不显式指定为IN,那么默认就是IN类型
2.IN类型参数一半只用于传入,在调用存储过程中一般不作修改和返回

3.如果调用存储过程中需要修改和返回值,可以使用OUT类型参数


(2)存储过程的传出参数OUT

需求:调用存储过程时,传入uid返回该用户的uname

delimiter $$
create procedure testa(IN my_uid int, OUT my_uname varchar(32))
begin
    select uname into my_uname from users where uid=my_uid;
    select my_uname;
end;
$$
delimiter ;
set @uname:='';
call testa(2, @uname);
select @uname as myunameAA;

 

1.传出参数:在调用存储过程中,可以改变其值,并可返回
2.OUT是传出参数,不能用于传入参数值

3.调用存储过程时,OUT参数也需要指定,但必须是变量,不能是常量

4.如果既需要传入,同时又需要传出,则可以使用INOUT类型参数

 

(3)存储过程的可变参数INOUT

需求:调用存储过程时,参数my_uid和my_uname,既是传入,也是传出参数

delimiter $$
create procedure testa(INOUT my_uid int, INOUT my_uname varchar(32))
begin
    set my_uid=2;
    set my_uname='hxf3'
    select uname into my_uname from users where uid=my_uid;
    select my_uid,my_uname;
end;
$$
delimiter ;
set @uname:='';
set @uid:=0;
call testa(@uid, @uname);
select @uid as uidAA, @uname as myunameAA;

1.可变变量INOUT:调用时可传入值,在调用过程中,可修改其值,同时也可返回值。
2.INOUT参数集合了IN和OUT类型的参数功能

3.INOUT调用时传入的是变量,而不是常量

(4)小结

1.存储过程的参数类型有:IN, OUT, INOUT

2.存储过程各参数的使用示例
————————————————
版权声明:本文为CSDN博主「鱼香青椒丝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wubinyu/article/details/78169553

标签:存储,uid,uname,参数,MySQL,参和不带,my,INOUT
From: https://www.cnblogs.com/will-wu/p/17535567.html

相关文章

  • Debian 12安装配置Apache2.4 + PHP8.0 + MySQL5.7常见问题记录
    1.Apache2.4安装1.1浏览器访问提示502错误正常通过sudoaptinstallapache2安装,安装完成通过systemctlstatusapache2查看运行状态正常,但浏览器访问IP地址提示502错误解决:问题大概率出自服务器防火墙#查看防火墙规则列表sudoufwapplist#Web服务器相关条目#>WW......
  • 麒麟V10安装好MySQL后报错Unit mysql.service could not be found
    导言:这个错误消息表示系统中找不到名为"mysql.service"的服务单元,通常意味着MySQL数据库服务器未正确安装或已卸载.。1.检查MySQL是否已正确安装:确认已经按照正确的方式安装了MySQL数据库服务器,可以参考MySQL官方文档或其他安装指南来确保正确安装。2.检查服务名称:确......
  • 如何实现pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '
    解决“pymysql.err.OperationalError:(2003,"Can'tconnecttoMySQLserveron'10.1"错误的步骤概述当使用pymysql连接MySQL数据库时,有时会出现连接错误,其中一个常见的错误是pymysql.err.OperationalError:(2003,"Can'tconnecttoMySQLserveron'10.1'")......
  • 解决oracle zhs16gbk和MySQL utf8转换乱码的具体操作步骤
    解决OracleZHS16GBK和MySQLUTF8转换乱码问题作为一名经验丰富的开发者,我将向你解释如何解决OracleZHS16GBK和MySQLUTF8转换乱码问题。我们将按照以下步骤进行操作:步骤说明1导出数据2创建MySQL数据库3创建UTF8编码的表4导入数据接下来,我将详细解释......
  • MySQL之批量更新多条记录不同值
    之前文章:https://www.cnblogs.com/xingxia/p/mysql_basic.html mysql更新语句很简单,更新一条数据的某个字段,一般这样写:UPDATEmytableSETmyfield='value'WHEREother_field='other_value';1.如果更新同一字段为同一个值,mysql也很简单,修改下where即可:UPDATEmytableSE......
  • mysql常用操作&配置优化
    一、基础操作1、增创建用户:createuser'zhangsan'@'10.10.10.10'identifiedby'密码'; #示例用户授权:grantallon*.*to'zhangsan'@'%';     #示例创建并授权用户:grantallon*.*to'lisi'@'%'identifi......
  • smbms mysql
     /*NavicatMySQLDataTransferSourceServer:localhost_3306SourceServerVersion:50555SourceHost:127.0.0.1:3306SourceDatabase:smbmsTargetServerType:MYSQLTargetServerVersion:50555FileEncoding......
  • linux系统报错:系统自己弹出诸如 kernel:NMI watchdog: BUG: soft lockup - CPU#2 stuc
    1、https://blog.csdn.net/weixin_41752389/article/details/120777145 内核软死锁(softlockup)Softlockup:这个bug没有让系统彻底死机,但是若干个进程(或者kernelthread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。出现死锁原因1、CPU高负载时......
  • MySQL中常用的字符串函数
    1.字符串拼接concat(str1,str2,...):将str1,str2...等多个字符串拼接成一个长字符串,如果有任何一个参数为NULL,则返回值为NULLconcat_ws(separator,str1,str2,...):指定分隔符,将多个字符串拼接成一个长字符串,如果有任何一个参数(包括分隔符)为NULL,则返回值为NULLgroup_concat(dis......
  • MySQL查询语句优化方法
    1、应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。3、应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫......