存储过程的使用(一)


 
查询存储过程:
show procedure  status where Db='数据库名称'
SHOW PROCEDURE STATUS //查询所有的存储过程
SHOW PROCEDURE STATUS  LIKE  'pattern' //查询符号要求的存储过程
如:
SHOW PROCEDURE STATUS  LIKE  'myuse' 查询的就是存储过程名称 为myuse 的信息
 
 
查询数据库字符编码情况
show variables where Variable_name like 'collation%';
 
删除存储过程:
DROP PROCEDURE IF EXISTS myuse //IF EXISTS最好带上 不然会报错
 
 
创建存储过程的基本样式:
create procedure 存储过程名称( 参数的种类 参数1 数据类型参数的种类 参数2数据类型...参数的种类 参数n 数据类型
BEGIN  
// 处理内容 其中可以用到函数和条件语句等
END
 
注释: 存储过程的名称可以自由定义,但不可与存在的函数或存储过程名称重复,命名时建议以【sp_】开头,需要处理的内容则编辑在BEGIN和END之间。参数的种类分3种,分别是IN、OUT、INOUT,其中IN为输入参数类型,OUT为输出参数类型,而INOUT既是输入类型又是输出类型
 
下面先创建一个简单的例子
create procedure hi() select 'hello'
 
 
/-----分割线-------/
那我们怎么使用它?
调用语法如下:
CALL 存储过程名称(参数,....)
 
如上面创建的存储过程就可以这样调用
call hi()
(ps:因为没有函数参数可以不写参数,注意存储过程和调用是分开执行的,一起执行会报错)
 
 
 
下面创建一个稍微复杂一点的存储过程(函数)
 
 
CREATE  PROCEDURE `myuse`( IN NAME VARCHAR (12) )
BEGIN
    if name is null or name='' then
       select * from lei ;
    else
    select * from code where code.`name` = NAME;
    end if;
END
 
(ps:注意看到使用了IF else,在if里面使用then才能写对应的sql语句 并且每段sql结尾必须带上英文分号。使用了if else 最终要使用 end if;(分号也是必带的)代表条件语句的结束,不然创建过程会报错)
首先 解析这个存储过程的意思: 如果输入参数(使用了IN)是null或‘’会执行 select * from lei这个sql,不匹配条件就会执行下面的
 
调用结果:
call myuse('')
 
call myuse('')
 
 
 
下面再来创建一个单纯的输出参数的存储过程
 
CREATE PROCEDURE sp_con ( OUT v1_name varchar(10), OUT v2_age varchar(10) ) BEGIN
SELECT
    name
FROM
    CODE limit 0,1 INTO v1_name;
SELECT
    age
FROM
    lei limit 0,1 INTO v2_age;
END;
 
//上面的sql使用into +形参,这个意思就是查询结果赋值给此形参 这个形参称之为sql里面的变量
 
call sp_con(@v1_name,@v2_age)
//下面的调用方式也不同了,使用@XX的格式,这就是mysql里面的变量命名规则
 
//然后查询就可以使用变量,如下面所示,值得一提的是变量是会随着服务关闭而消失的,而存储过程不会
select @v1_name,@v2_age
 
//其实变量名称不一定非要跟存储过程的out类型中 参数一样,如下图所示,只不过查询一定要用自己设置的变量
call sp_con(@a1,@b1)
select @a1,@b1
 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员ken

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值