查找存储过程,判断mysql是否存在此列

  1. DROP PROCEDURE IF EXISTS p7;    --防止数据库中有这个存储过程,先删掉  
  2.   
  3. CREATE PROCEDURE p7()  
  4. BEGIN  
  5.   
  6.     DECLARE nRetRowCount int;  
  7.   
  8.     SELECT count(COLUMN_NAME) INTO nRetRowCount  
  9.     FROM information_schema.columns  
  10.     WHERE table_name = 'persons'  
  11.     AND column_name = 'Id_B';  
  12.   
  13.     IF nRetRowCount = 0 THEN    --如果没有记录  
  14.         ALTER TABLE persons ADD Id_B int(4);  
  15.     END IF;  
  16.   
  17. END  
  18.   
  19. DROP PROCEDURE IF EXISTS AddColumnsByIsNotExist;  
  20. CREATE PROCEDURE AddColumnsByIsNotExist (IN paramDBName VARCHAR(32), IN paramTableName VARCHAR(32),IN paramColumnName VARCHAR(32),IN paramColumnType VARCHAR(16), IN paramDefaultVal VARCHAR(16))  
  21. BEGIN  
  22.     DECLARE nRetRowCount int;  
  23.       
  24.     SELECT count(COLUMN_NAME) INTO nRetRowCount   
  25.     FROM information_schema.columns  
  26.     WHERE UPPER(TABLE_SCHEMA) = UPPER(paramDBName)  
  27.     AND UPPER(TABLE_NAME) = UPPER(paramTableName)  
  28.     AND UPPER(COLUMN_NAME) = UPPER(paramColumnName);  
  29.   
  30.     IF nRetRowCount = 0 THEN  
  31.         SET @prepareStatement = CONCAT("ALTER TABLE ", paramTableName, " ADD COLUMN ",paramColumnName ," ", paramColumnType, " DEFAULT ", paramDefaultVal, " ");  
  32.   
  33.         PREPARE stmt FROM @prepareStatement;  
  34.         EXECUTE stmt ;  
  35.         DEALLOCATE PREPARE stmt;  
  36.     END IF;  
  37. END  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值