sql >> Database >  >> RDS >> Mysql

hoe gebruik ik een variabele in een database-instructie maken?

U hoeft alleen voorbereide verklaringen te gebruiken, hier is de werkende code:

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. Dubbele invoer '0' voor sleutel 'PRIMARY'

  2. Veld 'id' heeft geen standaardwaarde?

  3. Master-Master MySQL-databasereplicatie configureren

  4. Een postgres-back-upbestand herstellen via de opdrachtregel?