Adatbázis schema meglétének vizsgálata

Adatbázis schema meglétének vizsgálata
2009-02-12T21:31:01+01:00
2009-02-13T08:40:29+01:00
2022-11-12T14:55:38+01:00
parpad
Tárolt eljárásban szeretném egy if feltétel segítségével vizsgálni, hogy a megadott adatbázis schema létezik-e az adatbázisban.
Tehát ha létezik az adatbázis, akkor futtatni szeretnék egy másik tárolt eljárást. Hogyan tudom lekérezni egy feltételben, hogy létezik-e a keresett adatbázis?
Találtam ugyan egy megoldást a neten:

SELECT IF(EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'Temp'), 'Yes','No')
de sajnos nem tudom, hogy a visszakapott Yes vagy No értéket hogyan tudom egy változóba beletenni, amit If-el le tudok kérdezni, hogy ha

IF változó='adatbázisnév' then ... parancsok end if;
Mutasd a teljes hozzászólást!
Ez elég RTFM kérdés... kurzorok, változók
Mutasd a teljes hozzászólást!


  • DELIMITER $$ DROP PROCEDURE IF EXISTS `eletallomany_teszt`.`userletrehozas_mysql` $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `userletrehozas_mysql`(usernev char(8),jelszo char (50)) BEGIN declare s1 char(255); declare s2 char(255); DECLARE done INT DEFAULT 0; declare cur1 cursor for SELECT IF(EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'allomany'), 'Yes','No'); declare cur2 cursor for SELECT IF(EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'allomany_teszt'), 'Yes','No'); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN cur1; FETCH cur1 INTO s1; OPEN cur2; FETCH cur2 INTO s2; SET @s = CONCAT("CREATE USER ", usernev, " IDENTIFIED BY", '"',jelszo,'"'); prepare stmt from @s; execute stmt; if s1='eletallomany' then SET @t = CONCAT("grant all on eletallomany.* to"," '",usernev,"'@'%'"); prepare stmt2 from @t; execute stmt2; end if; if s2='eletallomany_teszt' then SET @z = CONCAT("grant all on eletallomany_teszt.* to"," '",usernev,"'@'%'"); prepare stmt3 from @z; execute stmt3; end if; END $$ DELIMITER ;

    megcsinálja a user-t, de hiába létezi az allomany_teszt schema, nem adja meg a user-nek a jogokat.
    Mutasd a teljes hozzászólást!
  • sorry. figyelmetlen voltam a valtozoknal es nem arra if-eltem, amit az sql visszaad.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd