0

データベース内にINパラメータを使用してプロシージャを作成しました(MySql-> Routines-> Create Procedure)。私はそれを使って新しいデータベースを作成しています。プロシージャを呼び出して引数を渡すと、新しいデータベースが作成されますが、新しいデータベースの名前は、プロシージャで使用する変数の名前であり、パラメータとして渡す名前ではありません。

CREATE PROCEDURE dbCreate(IN dbName VARCHAR(255))

始める

    CREATE DATABASE IF NOT EXISTS dbName COLLATE utf8_bin;
    CREATE TABLE IF NOT EXISTS dbName.City(
    .
    .
    .
    );
    

プロシージャdbCreateを呼び出すと、

old_databaseを使用します。

CALL old_database.dbCreate('FRANCE');

MySqlは、dbNameと呼ばれる新しいデータベースを生成します。

4

1 に答える 1

0

文字列であるかのようにステートメントを作成します。

SET @s = CONCAT('USE old_database; CALL old_database.dbCreate(', dbName,');');
PREPARE stmt FROM @s;
EXECUTE stmt;
于 2012-10-23T17:45:10.933 に答える