1. 程式人生 > >mysql 查詢資料庫裡面欄位的id是否存在 可以限定表和欄位

mysql 查詢資料庫裡面欄位的id是否存在 可以限定表和欄位

DELIMITER $$


USE `awebprice`$$


DROP PROCEDURE IF EXISTS `p_search_value`$$


CREATE DEFINER=`dbn_admin`@`%` PROCEDURE `p_search_value`(
IN p_value VARCHAR(255)
,IN p_tablelike VARCHAR(255) 
,IN p_columnlike VARCHAR(255) 
)
BEGIN
DECLARE var_table VARCHAR(255);
DECLARE var_column VARCHAR(255);
DECLARE var_sql VARCHAR(1000);
DECLARE var_done INT DEFAULT FALSE;
DECLARE cur_Search CURSOR FOR 
SELECT table_name,column_name,
CONCAT('set @aa =(select 1  from `',table_name,'` where `',column_name,'`=',


(CASE WHEN data_type IN ('int','bigint') THEN p_value ELSE CONCAT('''',p_value,'''') END)
,' limit 1)') AS sq
FROM information_schema.`COLUMNS`
WHERE table_schema=DATABASE() AND data_type IN ('varchar','int','bigint')
AND table_name LIKE CONCAT('%',IFNULL(p_tablelike,'_'),'%')
AND column_name LIKE CONCAT('%',IFNULL(p_columnlike,'_'),'%')
;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET var_done = TRUE;
DROP TEMPORARY TABLE IF EXISTS tmp_to_save_result;
CREATE TEMPORARY TABLE tmp_to_save_result(tb VARCHAR(255),col VARCHAR(255));
 OPEN cur_Search;
 read_loop:LOOP
   FETCH cur_Search INTO var_table,var_column,var_sql;
 
    
   IF var_done THEN
     LEAVE read_loop;
   END IF;
   


   SET @p_sql=var_sql;
   PREPARE stmt FROM @p_sql;
   EXECUTE stmt; 
  
   IF(FOUND_ROWS()=1) THEN
INSERT INTO tmp_to_save_result VALUE(var_table,var_column);
   END IF;
   DEALLOCATE PREPARE stmt;  
   END LOOP;
 CLOSE cur_Search;
SELECT tb,col FROM tmp_to_save_result;
    END$$


DELIMITER ;