查找存储过程,判断mysql是否存在此列
2017-12-07 12:54
295 查看
DROP PROCEDURE IF EXISTS p7; --防止数据库中有这个存储过程,先删掉
CREATE PROCEDURE p7()
BEGIN
DECLARE nRetRowCount int;
SELECT count(COLUMN_NAME) INTO nRetRowCount
FROM information_schema.columns
WHERE table_name = 'persons'
AND column_name = 'Id_B';
IF nRetRowCount = 0 THEN --如果没有记录
ALTER TABLE persons ADD Id_B int(4);
END IF;
END
DROP PROCEDURE IF EXISTS AddColumnsByIsNotExist;
CREATE PROCEDURE AddColumnsByIsNotExist (IN paramDBName VARCHAR(32), IN paramTableName VARCHAR(32),IN paramColumnName VARCHAR(32),IN paramColumnType VARCHAR(16), IN paramDefaultVal VARCHAR(16))
BEGIN
DECLARE nRetRowCount int;
SELECT count(COLUMN_NAME) INTO nRetRowCount
FROM information_schema.columns
WHERE UPPER(TABLE_SCHEMA) = UPPER(paramDBName)
AND UPPER(TABLE_NAME) = UPPER(paramTableName)
AND UPPER(COLUMN_NAME) = UPPER(paramColumnName);
IF nRetRowCount = 0 THEN
SET @prepareStatement = CONCAT("ALTER TABLE ", paramTableName, " ADD COLUMN ",paramColumnName ," ", paramColumnType, " DEFAULT ", paramDefaultVal, " ");
PREPARE stmt FROM @prepareStatement;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt;
END IF;
END
CREATE PROCEDURE p7()
BEGIN
DECLARE nRetRowCount int;
SELECT count(COLUMN_NAME) INTO nRetRowCount
FROM information_schema.columns
WHERE table_name = 'persons'
AND column_name = 'Id_B';
IF nRetRowCount = 0 THEN --如果没有记录
ALTER TABLE persons ADD Id_B int(4);
END IF;
END
DROP PROCEDURE IF EXISTS AddColumnsByIsNotExist;
CREATE PROCEDURE AddColumnsByIsNotExist (IN paramDBName VARCHAR(32), IN paramTableName VARCHAR(32),IN paramColumnName VARCHAR(32),IN paramColumnType VARCHAR(16), IN paramDefaultVal VARCHAR(16))
BEGIN
DECLARE nRetRowCount int;
SELECT count(COLUMN_NAME) INTO nRetRowCount
FROM information_schema.columns
WHERE UPPER(TABLE_SCHEMA) = UPPER(paramDBName)
AND UPPER(TABLE_NAME) = UPPER(paramTableName)
AND UPPER(COLUMN_NAME) = UPPER(paramColumnName);
IF nRetRowCount = 0 THEN
SET @prepareStatement = CONCAT("ALTER TABLE ", paramTableName, " ADD COLUMN ",paramColumnName ," ", paramColumnType, " DEFAULT ", paramDefaultVal, " ");
PREPARE stmt FROM @prepareStatement;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt;
END IF;
END
相关文章推荐
- mysql 判断是否已存在及插入表数据 的 简单存储过程
- MySQL判断索引是否存在的存储过程
- MySQL存储过程----创建索引前,先判断索引是否已经存在,如果存在,则不添加,如果不存在,添加
- 判断单链表中是否存在环及查找环的入口点
- Sql Server判断数据库、表、存储过程、函数是否存在
- mysql创建数据表时如何判断是否已经存在?
- sql 判断数据库,表,存储过程等是否存在的代码(教程)
- 实现列表类,清空、添加、删除、查找、插入,判断元素是否存在
- SqlServer判断数据库、表、存储过程、函数是否存在
- vector、map 判断某元素是否存在、查找指定元素
- MySQL判断表中是否存在某一字段
- mysql5.7基础 create database if not exists... 判断数据库是否存在 若不存在则创建
- 判断单链表中是否存在环及查找环的入口点
- springjdbc+mysql判断数据库以及数据库表是否存在
- SQLServer2005 判断数据库中是否存在某张表或是查找库中的所有表名,然后删除
- mysql 判断表字段或索引是否存在,然后修改
- mysql判断某一张表是否存在
- MYSQL判断database、table是否存在
- (转载)Mysql查找如何判断字段是否包含某个字符串
- mysql在增加列前进行判断该列是否存在