MYSQL存储过程的创建、调用和查看

创建存储过程

CREATE
    [DEFINER = { user | CURRENT_USER }]
 PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
 
proc_parameter:
    [ IN | OUT | INOUT ] param_name type
 
characteristic:
    COMMENT 'string'
  | LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
 
routine_body:
  Valid SQL routine statement
 
[begin_label:] BEGIN
  [statement_list]
    ……
END [end_label]
IN、OUT、INOUT 三种参数

IN 输入参数:
表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

OUT 输出参数:
该值可在存储过程内部被改变,并可返回

INOUT 输入输出参数:
调用时指定,并且可被改变和返回

简化
CREATE
	PROCEDURE sp_name([[IN |OUT |INOUT ] 参数名 数据类形...])
BEGIN
	routine_body
END

DELIMITER // 或 DELIMITER ; 为修改分割符
MYSQL默认分割符为; 若不声明编译器会当成SQL处理,则编译报错。
事先修改分割符使编译存储过程成功。并在事后还原分割符

注: 若使用mysql管理工具可以不需要声明分割符

调用存储函数

call sp_name([proc_parameter[,...]])
示例
DELIMITER //  
CREATE PROCEDURE proc(IN a int)  
    BEGIN   
    SELECT a;   
    SET a=10;   
    SELECT a;   
    END//  
DELIMITER ; 

#调用
set @a = 1;
call  proc(@a)

存储过程查询

select ROUTINE_NAME,ROUTINE_TYPE from mysql.proc where db='数据库名';

或者

select ROUTINE_NAME,ROUTINE_TYPE from information_schema.routines where routine_schema='数据库名';

或者

show procedure status where db='数据库名';
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值