[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: 45 strings in 45 mysql databases



Hallo Frans,

Ik heb wat betreft het schakelen tussen databases geen ervaring met MySQL, maar
wel (al lang geleden) met SQL Server, en daar kon je het alleen doen door gewoon
in de procedure een hele grote string te maken waarin dus USE '...' staat en die
in een keer weer uit te laten voeren. Je kon dus geen parameter aan USE doorgeven.

Concreet zie ik in de SQL hieronder in de producere-definitie staan:

USE `databasename`;

Volgens mij betekent dit gewoon dat je probeert de database met de naam
'databasename' te gebruiken. Intuïtief zou je dan zeggen dat je het volgende
moet doen:

USE databasename;

... maar de ervaring met SQL Server leert dat dit best wel eens niet zou kunnen
werken.

Groet,
Matijs

On 19/12/14 21:56, Frans van Berckel wrote:
> Mijn doel is ongeveer 45 urls per site in 45 websites aan te passen. 
> 
> Kan dat in plain .sql voor mysql? Zodat ik deze in phpmyadmin kan
> uitvoeren. Ja hoor zul je zeggen? Maar dan worden het heel veel regels. 
> 
> Dus dacht ik, kan ik die update commando's, bij elkaar in een functie
> stoppen? Dan kan ik die in de zelfde file, per database kan aanroepen?
> 
> Deze regel werkt in ieder geval. Met die 45 urls zit het dus wel goed.
> 
> update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘www.domain.com’,
> ‘www.other.com’)
> 
> Nu de call per database nog. Die deze update commando's kan aanroepen. 
> 
> Ik probeerde het met procedure ...
> 
> DELIMITER //
> CREATE PROCEDURE PROCEDURE_NAME (IN databasename CHAR(16))
> USE `databasename`;
> 
> BEGIN 
> update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME,
> ‘www.domain1.com’, ‘www.other1.com’);
> .
> .
> update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME,
> ‘www.domain2.com’, ‘www.other2.com’);
> .
> .
> update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME,
> ‘www.domain3.com’, ‘www.other3.com’);
> END //
> 
> DELIMITER ;
> 
> CALL PROCEDURE_NAME(db1at1287);
> .
> .
> CALL PROCEDURE_NAME(db2at1392);
> .
> .
> CALL PROCEDURE_NAME(db3at1546);
> 
> ... maar het werkt gewoon niet. Of moet het misschien function zijn? Of
> heel wat anders voor zo'n routine als deze?
> 
> Iemand met wat meer ervaring met plain . sql?
> 
> Met vriendelijke groet,
> 
> Frans van Berckel
> 
> 


-- 
Matijs

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: