sql >> Databasteknik >  >> RDS >> Mysql

hur använder jag en variabel i skapa databassatsen

Du behöver bara använda förberedda uttalanden, här är arbetskoden:

DELIMITER //

drop procedure if exists create_db //

create procedure create_db(name TEXT)
BEGIN
  DECLARE temp TEXT;
  DECLARE user TEXT;
  SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = name INTO temp;
  if temp = name then
  SIGNAL SQLSTATE '45002' SET MESSAGE_TEXT = 'This database already exist';
    else
    SELECT USER() INTO user;

    SET @s = CONCAT('CREATE DATABASE ', name);
    PREPARE stmt_create FROM @s;
    EXECUTE stmt_create;
    DEALLOCATE PREPARE stmt_create;

    SET @s = CONCAT('GRANT ALL PRIVILEGES ON ', name, '.* TO ', user, ' WITH GRANT OPTION');
    PREPARE stmt_grant FROM @s;
    EXECUTE stmt_grant;
    DEALLOCATE PREPARE stmt_grant;

  END IF;
END //

DELIMITER ;



  1. Förstå MySQL TRUNCATE TABLE genom praktiska exempel

  2. En för-ifylld databas fungerar inte vid API 28 ger inget sådant tabellundantag

  3. Hur väljer jag slumpmässigt unika par av rader från en tabell?

  4. Vilket är det bästa sättet att dubbelriktat synkronisera dynamisk data i realtid med mysql