PREPARE statement_name FROM sql_text /*定义*/

EXECUTE statement_name [USING variable [,variable...]] /*运行预处理语句*/

DEALLOCATE PREPARE statement_name /*删除定义*/

这是我项目其中用到的,用作參考使用:

DELIMITER $$

DROP PROCEDURE IF EXISTS `gpsdata`.`sp_test`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_test`(

gpstime_ varchar(128),

gpsname_ varchar(128),

gpsinfo_ varchar(256)

)

BEGIN

DECLARE tbname varchar(50) DEFAULT '0';

DECLARE v_sql varchar(1024) DEFAULT '0';

SET v_sql=CONCAT('select * from ', tbname ,' where gpsname = ',gpsname_,' order by gpstime desc limit 1');

SET @lastdata = v_sql;

PREPARE lastdata FROM @lastdata;

EXECUTE lastdata;

DEALLOCATE PREPARE lastdata;

select v_sql;

END$$

DELIMITER ;

使用 PREPARE 的几个注意点:

A: PREPARE stmt_name FROM preparable_stmt;

提前定义一个语句,并将它赋给 stmt_name ,stmt_name 是不区分大写和小写的。

B: 即使 preparable_stmt 语句中的 ? 所代表的是一个字符串,你也不须要将 ? 用引號包括起来。

C: 假设新的 PREPARE 语句使用了一个已存在的 stmt_name ,那么原有的将被马上释放!

即使这个新的 PREPARE 语句由于错误而不能被正确运行。

D: PREPARE stmt_name 的作用域是当前client连接会话可见。

E: 要释放一个提前定义语句的资源,能够使用 DEALLOCATE PREPARE 句法。

F: EXECUTE stmt_name 句法中,假设 stmt_name 不存在。将会引发一个错误。

G: 假设在终止client连接会话时。没有显式地调用 DEALLOCATE PREPARE 句法释放资源,server端会自己动释放它。

H:在提前定义语句中。CREATE TABLE, DELETE, DO, INSERT, REPLACE, SELECT, SET, UPDATE, 和大部分的 SHOW 句法被支持。

I:PREPARE 语句不能够用于存储过程(5.0以上能够使用),自己定义函数!

但从 MySQL 5.0.13 開始,它能够被用于存储过程,仍不支持在函数中使用!

mysql存储过程prepare_MySQL数据库存储过程动态表建立(PREPARE)相关推荐

  1. MySQL数据库存储过程动态表建立(PREPARE)

    PREPARE statement_name FROM sql_text /*定义*/ EXECUTE statement_name [USING variable [,variable...]] / ...

  2. mysql数据库特征_如何掌握MySQL数据库中动态表的特征

    以下的文章主要介绍的是如何正确掌握MySQL数据库中动态表的特征,可以说动态表在MySQL数据库中使用频率还是很大的,所以MySQL数据库中动态表的掌握也是一件很重要的事情,以下就是文章的具体内容. ...

  3. mysql event scheduler机制 与 动态表名创建

    mysql event scheduler机制 与 动态表名创建 今天有一个需求,需要定时在mysql创建表与删除表,以及根据日期命名表名.诚然,通过外部程序很容易实现与控制这一切. 但是需要额外的服 ...

  4. B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?

    B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找? ~~B-Tree~~ ==B+Tree== ~~二叉树(Binary Search Tre ...

  5. MySQL设计工厂管理数据库(Ⅰ)—表结构设计

    MySQL设计工厂管理数据库(Ⅰ)-表结构设计 引言 设计思路 工厂管理E-R图 设计工厂管理逻辑图 实现过程 项目(project)表实现 职工(staff)表设计 零件(components)表设 ...

  6. mysql建立修改表存储过程_MySQL数据库创建、表的创建、存储过程、触发器

    一.基本内容 (1) 使用SQL语句创建数据库: (2) 为数据库分配管理权限: (3) 定义表和数据库的完整性,student(学生表),course(课程表)和 sc(学生选课表), 并设置各个表 ...

  7. mysql 动态创建事件_mysql 通过事件定时为数据库创建动态表名

    #检测事件是否开启 show variables like 'event_scheduler'; #开启事件(最好在my.init设置,因为重启后还会变回默认值OFF) set global even ...

  8. mysql怎么写数据存储过程_数据库存储过程要怎么写

    SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数) ...

  9. MySQL:创建数据库,数据表,主键和外键

    目录 前言: 安装MySQL: 打开MySQL: 创建数据库: 查看已建数据库: 查看数据库引擎: 创建数据表: 主键约束: 单字段主键: 多字段联合主键: 外键约束: 前言: MySQL数据库安装了 ...

最新文章

  1. CUDA Samples: Dot Product
  2. Ubuntu 17.04 编译安装 Nginx 1.9.9 配置 https 免费证书
  3. Ubuntu 无界面使用selenium chrome + headless
  4. 抽象类可以有构造函数吗
  5. O/R Mapping 研究报告(转)
  6. jQuery:localStorage用法
  7. 解决IntelliJ IDEA报错Failed to read candidate component class: file [ ]; nested exception is org.
  8. 如何使用Angular rxjs进行优雅限流
  9. oracle 转换成csv文件,如何将csv转换为oracle中的表
  10. rust腐蚀怎么单人游戏_腐蚀游戏怎么提高帧数 Rust设置隐藏画质提高FPS教程
  11. python通过内置函数测试对象类型_Python的内置函数
  12. 手机内存8+128与6+256价格相同,你会选哪个?
  13. 轻松修改Mac地址的中文版工具:WiFiSpoof for Mac
  14. 修改hadoop配饰文件文件后导致hive无法找到原有的dfs文件
  15. 直流电机PID控制源码c语言,51单片机PID+PWM直流电机转速闭环控制源码(12864液晶显示)...
  16. 两台没有网络的计算机如何共享文件,两台电脑共享文件,教您两台电脑如何共享文件...
  17. (九)ThunderbirdMail配置QQ邮件服务
  18. 阿里Leader都干些啥
  19. protobuf中repeated类型变量与C++ vector类型变量的相互赋值方法
  20. 招行数据岗笔试题- 信用卡推荐客户列表

热门文章

  1. php中编码转换,php编码转换_php编码转换函数
  2. 【文档学习】tensorboardX——summary writer
  3. 计算机上面的字母代表什么意思,显卡前后字母代表什么意思?
  4. 房地产年终奖丰厚,移动互联网功不可没
  5. 精益六西格玛的营运改良案例 -- 优思学院
  6. 关于网站开发中的欢迎页面
  7. windows-世界之窗_Flash-Player版本更新
  8. Django项目使用wangeditor方法
  9. 基于Android平台的记事本软件(Android Studio项目+报告+app文件)
  10. 《网页设计基础——HTML注释与CSS注释》