MySQL 存储过程检测表是否存在

SQL语句实现:

SELECT COUNT(*) FROM information_schema.`TABLES` WHERE TABLE_NAME=‘youTableName‘;

where子句中,表名是字符串类型,要加单引号。

MySQL存储过程中

函数实现:

CREATE DEFINER = `root`@`localhost` FUNCTION `tableExists`(`tName` varchar(30))
 RETURNS tinyint(4)
BEGIN
	DECLARE tableExists TINYINT DEFAULT 0;
	SELECT 1 INTO tableExists FROM information_schema.`TABLES` WHERE TABLE_NAME=tName;
	RETURN tableExists;
END;
时间: 2024-12-18 01:07:05

MySQL 存储过程检测表是否存在的相关文章

Mysql存储过程历史表备份

应用背景 1.采集系统需要将实时数据存入历史表,利用mysql的事件,每小时存一次采集数据: 2.每个月1号凌晨1点,将历史表备份,名称命名为his_aic_20190501 01:00,将原表清空. 1.历史表备份 1.1存储过程 BEGIN INSERT INTO his_dic (ParentID,PointID,DICName,DICValue,StateDesc,AlarmThreshold,AlarmLevel,AlarmEnable,UpdatedTime) select Pare

mysql 存储过程 动态表名

今天写存储过程时,遇到要将表名最为参数的问题,如果不涉及到游标的话,使用prepare可以解决问题,但是,动态表名要运用在游标中的话,则prepare就得靠边站了. 集众人之智慧,最后,使用临时表解决了问题. 如何在MySQL的存储过程中实现把过程参数用在游标定义的SELECT命令里面作为表名引用 首先,我们来把场景描绘一下,比如下面的例子(当然是无法正确运行的):   CREATE PROCEDURE `proc`(SourceDBName CHAR(50), SourceTableName

MySQL存储过程修改表存储引擎为InnoDB

第一次写存储过程,写得好憋屈. set @c_db := (select database()); drop procedure if exists alter_tables_engine; delimiter // create procedure alter_tables_engine() begin declare db varchar(64); declare done boolean default 0; declare t varchar(64); declare table_nam

mysql 存储过程,表

drop procedure if exists UP_SYS_GetBillId;/* 创建:Jaxk 2017-03-31 功能:get bill id */ create procedure UP_SYS_GetBillId ( ProgramID INT, out BillID varchar(200) , out Result varchar(200) )BEGIN set Result='ok';end /*proc调用*/call UP_SYS_GetBillId(12, @p,

【瞎折腾系列】mysql存储过程初接触

开始[瞎折腾系列],这个系列纯属瞎折腾,可能没有什么实际意义. mysql存储过程生成表: 新建一张user表,包含id, username , password , usertable字段. 然后创建存储过程: create PROCEDURE create_table() BEGIN DECLARE n int DEFAULT 0; DECLARE t_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET

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

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=`r

mysql存储过程之游标遍历数据表

原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹. 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentLingQi INT; 5 6 DECLARE ShizuName VARCHAR(30); 7 /* 声明游标 */ 8 DECLARE rs CURSOR FOR SELECT

MySQL 存储过程删除大表

1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure status\G 查看数据库中有哪些存储过程 show procedure status where db = 'db_name'\G 查看指定数据库(db_name)中有哪些存储过程 select name from mysql.proc where db = 'db_name'; 查看指定数据库(db

MYSQL批量创建表的存储过程

因为业务需要,创建了100个表,但是这些表的结构都是一样的,作为程序员,就是要解决这种重复劳动.然而这种事情还要单独写个php脚本的话太麻烦了吧,所以就干脆学了一下直接用Mysql存储过程怎么实现: 首先是创建表的:( LPAD(`@i`, 2, '0')的作用 是将1,2,3这些数字转化为'01','02','03') DROP PROCEDURE IF EXISTS `create_tables`; CREATE PROCEDURE create_tables () BEGIN DECLAR