Anlegen verschiedener Datenbanken in stored procedures

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Anlegen verschiedener Datenbanken in stored procedures

Postby Knappe » 30. October 2005 19:29

Hallo,

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 ?
Knappe
 
Posts: 114
Joined: 18. November 2004 17:40

Postby Knappe » 02. November 2005 09:20

Hat keiner eine Ahnung ?
Knappe
 
Posts: 114
Joined: 18. November 2004 17:40


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 22 guests