ich habe folgendes Problem mit der MySQL 5.0.15 :
in meiner Anwendung muss ich immer wieder neue Datenbanken anlegen (keine Temporären) und möchte dies ausschliesslich über "Stored Procedure" machen.
Die Namen dieser Datenbanken werden in Variablen gehalten und setzen sich aus verschiedenen Parametern zusammen.
Beispiele :
Name 1 -> M012005
Name 2 -> M012006
Name 3 -> M032007
Name 4 -> M012005 ....
Nun habe ich eine Lösung mit Stored Procedure gesucht :
Beispiel 1:
- Code: Select all
CREATE PROCEDURE newdb (in myno VARCHAR(4), in myyear VARCHAR(4))
BEGIN
DECLARE myname CHAR(4);
SET myname = concat(myno, myyear);
CREATE DATABASE myname;
END;
--> MySQL erzeugt eine Datenbank mit dem Namen "myname" (und nicht dem Variableninhalt).
Ändere ich die folgende Zeile aus dem obigen Beispiel :
- Code: Select all
SET @myname = concat(myno, myyear);
CREATE DATABASE @myname;
-->erhalte ich ein "Syntax"-Error in Mysql-Querry.
Letztes Beispiel :
- Code: Select all
CREATE PROCEDURE newdb (in myno VARCHAR(4), in myyear VARCHAR(4))
BEGIN
SET @myno = myno;
SET @myyear = myyear;
SET @insert_query = concat('create database ', @myno, @ myyear);
PREPARE stmt1 FROM @insert_query;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END;
--> ..."CREATE DATABASE not allowed.." (in dem Prepare-Statement)
So ... was kann ich tun um mit CREATE DATABASE verschiedene Datenbanken mit variablen Namen zu erzeugen ?