mysql存储过程 变量和参数类型 您所在的位置:网站首页 以下哪个不是可设置的强类型参数 mysql存储过程 变量和参数类型

mysql存储过程 变量和参数类型

2024-07-10 11:56| 来源: 网络整理| 查看: 265

一个简单的存储过程

delimiter $$ create procedure testa() begin select * from p_m_table ; end; $$ delimiter ;

存储过程的结构组成:

1.创建格式 :create procedure 存储过程名

2.包含一个以上代码块,代码块在begin和end 之间 begin和end 可以嵌套使用

3.在命令行中创建需要定义提交的分隔符 delimiter $$

存储过程的特点:

1.能完成较复杂的判断和运算

2.可编程性强,灵活

3.SQL编程的代码可重复使用

4.执行速度相对快一些

5.减少网络之间数据传输,节省开销

存储过程的变量:

需求:编写存储过程,使用变量取user_id ='APP-2016-00494878'得用户名 并返回

delimiter $$ create procedure testd() begin declare my_uname varchar(32) default ''; set my_uname='linkui'; select uname into my_uname from users where user_id = ''; select my_uname; end; $$ delimiter ;

特点:

1.变量的声明使用 declare,一句declare只声明一个变量,变量必须先声明后使用

2.变量具有数据类型和长度,与mysql的SQL数据类型一致,因此甚至可以指定默认值、字符集 和排序规则

3.变量可以通过set赋值,也可以通过select into的方式赋值

4.变量需要返回,可以使用select语音,如:select 变量名

5.变量是有作用域的,作用范围在begin与end直接

6.需要在多个块直接传递值,可以使用全局变量,即放在所有代码块之前

7.传参变量是全局的,可以在多个块之间其作用

存储过程的传入参数 IN

需求:编写存储过程,传入 user_id 返回改用户的 user_name

delimiter $$ create procedure teste(IN my_user_id varchar(32)) begin declare user_name1 varchar(32) default ''; select user_name into user_name1 from p_app_user where user_id = my_user_id; select user_name1; end; $$ dilimiter ;

1.传入参数:类型为 IN,表示该参数的值必须在调用存储过程时指定,如果不显示指定位IN,

那么默认就是IN类型

2.IN类型参数一般只用于传入,在调用存储过程中一般不作修改和返回

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

存储过程的传出参数 OUT

需求:调用存储过程时,传入 user_id 返回改用户的user_name

delimiter $$ create procedure teste(IN my_user_id varchar(32),OUT user_name1 varchar(32)) begin select user_name into user_name1 from p_app_user where user_id = my_user_id; select user_name1; end; $$ dilimiter ;

调用存储过程:

set @user_name:=''; call teste('APP-2016-00494878',@user_name); select @user_name as user_nameAA

1.传出参数:在调用存储过程中,可以改变其值,并可返回

2.OUT是传出参数,不能用于传入参数值

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

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

存储过程的可变参数 INOUT

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

delimiter $$ create procedure teste(INOUT user_id1 varchar(32),INOUT user_name1 varchar(32)) begin set user_id1='APP-2016-00494878'; set user_name1 = 'linkui'; select user_id,user_name into user_id1,user_name1 from p_app_user where user_id = user_id1; end; $$ dilimiter ;

调用存储过程:

set @user_name1:=''; set @user_id1:=''; call teste(@user_id1,@user_name1); select @user_id1 as user_idAA,@user_name1 as user_nameAA

1.可变变量INOUT:调用时可传入值,在调用过程中,可修改其值,同时也可返回值

2.INOUT参数集合了IN和OUT类型的参数功能

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有