博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL存储过程之创建第一个存储过程
阅读量:4520 次
发布时间:2019-06-08

本文共 1664 字,大约阅读时间需要 5 分钟。

1. 选择分隔符

  在开始创建工作之前,我们需要定义一个分隔符,SQL语句如为:

mysql> DELIMITER //

  分隔符是你通知MySQL客户端你已完成一个sql语句的输入的字符或字符串符号,之前大多使用分号(;).由于在存储过程中,分号本身极有可能是存储过程本身的内容,基于这个原因,所以需要先定义一个其他的分隔符代替,定义完存储过程后可以通过以下语句恢复为分号:

mysql> DELIMITER ;

 

2. 创建程序实例  

CREATE PROCEDURE p1() SELECT * FROM t;

  1) CREATE PROCEDURE:表示创建存储过程的命令

  2) p1:存储过程的名字  

  说明:存储过程命名不区分大小写,同一数据库内的存储过程命名不能重复(否则会导致重载,某些DBMS允许重载,如Oracle,但MySQL不允许).存储过程名可以分开,可以包括空格,长度限制64个字符,但不能使用MySQL的内建函数名.

  3) ():括号里是参数列表,可以没有参数,但括号必需!

  4) SELECT * FROM t;:存储过程的执行内容,此处只有一句代码.这是存储过程的主体,是一般的sql语句,除非语句后是结束符号,否则分号是必须的.

 

3. 可出现在存储过程体中的合法sql语句 

  一个存储过程体中可以包含,INSERT, UPDATE, DELETE, SELECT, DROP, CREATE, REPLACE 等等sql语句,但要注意的是如果代码中包含MySQL的扩充功能,则代码将不能移植.

# 标准sql语句中,任何数据库操纵语言都是合法的:CREATE PROCEDURE P() DELETE FROM t;# SET COMMIT及ROLLBACK也是合法的:CREATE PROCEDURE P() SET @x=5;# MySQL的附加功能:任何数据定义语言的命令也是合法的:CREATE PROCEDURE P() DROP TABLE t;# MySQL扩充功能:直接的SELECT也是合法的:CREATE PROCEDURE P() SELECT 'a';

  之所以将存储过程中包括DDL语句的功能称为MySQL附加功能的原因是在sql标准中将这个定义为非核心的,即可选组件.

  在过程体中有一个约束,就是不能有对全程或表操作的数据库操作语句,如:

CREATE PROCEDURE p1 ()        CREATE PROCEDURE p2 () DELETE FROM t;

  以下语句对MySQL5.0来说都是全新的,不能出现在存储过程中:CREATE PROCEDURE, ALTER PROCEDURE, DROP PROCEDURE, CREATE FUNCTION,DROP FUNCTION, CREATE TRIGGER, DROP TRIGGER. 不过你可以使用  "CREATE PROCEDURE db5.p1 () DROP DATABASE db5;",但是类似 "USE database" 语句也是非法的,因为MySQL假定默认数据库就是过程的工作场所。

 

 4. 调用存储过程

  1) 要调用一个存储过程,只要输入CALL跟一个存储过程的名字及一个括号:

CREATE PROCEDURE p1() SELECT * FROM t;# ... ...mysql> CALL p1()// #此处不是分号,原因见上

  上述代码执行后屏幕返回t表的所有字段的所有记录.

  2) 其他实现方式:

  以下语句的执行效果相同:

mysql> CALL p1() // # ... ...mysql> SELECT * FROM t; //

  所以调用存储过程和直接执行里面的sql指令是一样的.

 

转载于:https://www.cnblogs.com/free-coder/p/4773691.html

你可能感兴趣的文章
python 学习(pip工具的安装)
查看>>
博客园在我的博客添加点击小心心特效
查看>>
如何简单解释 MapReduce算法
查看>>
微软Office Online服务安装部署(二)
查看>>
从 0 到 1 实现 React 系列 —— 1.JSX 和 Virtual DOM
查看>>
面向接口编程详解(二)——编程实例
查看>>
解决java.lang.NoClassDefFoundError: org/apache/log4j/Level
查看>>
端口号
查看>>
mysql for macOS安装
查看>>
iOS中的KeyChain的用途
查看>>
jquery与checkbox的checked属性的问题
查看>>
HDU5092——Seam Carving(动态规划+回溯)(2014上海邀请赛重现)
查看>>
java 格式化字符串
查看>>
[.Net]轻量ORM——Dapper
查看>>
语言基础
查看>>
C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)
查看>>
C#中字符串转换成枚举类型的方法
查看>>
psplash
查看>>
git的安装和简单使用
查看>>
20151024-1025-威海-第5届全国高校软件工程专业教育年会参会总结
查看>>