您的位置:首页 > 数据库 > MySQL

查找存储过程,判断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  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: