sql >> データベース >  >> RDS >> Mysql

createdatabaseステートメントで変数を使用するにはどうすればよいですか

    プリペアドステートメントを使用する必要があります。動作するコードは次のとおりです。

    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. テーブルを使用せずに2つの日付の間のすべての日付を選択します(日付のリストを生成します)

    2. SQLの順序:プロのようにデータを並べ替える5つの推奨事項と禁止事項

    3. AndroidタブレットでPHPとMySQLを実行するためのAndroidアプリを構築する

    4. SQLServerの列で数値以外の値を検索する