Kopiering af Stored procedures/functions vha ASP
Hej.Jeg prøver at lave et script der skal kopiere en flok Procedures og function fra en MySQL database over til den akruelle database
Scenarie:
Jeg har en testdatabase "Testsite" og en database der ligger på hjemmesiden (den aktuelle)
Jeg prøver at lave en ASP side, der henter alle functions og procedures fra "testsite" og opretter dem i den aktuelle database.
(skal bruges på mange forskellige sites)
Jeg har gjort følgende:
set RConn = Test2DB() ' connection to current Database
set TConn = TestDB() 'Connection to test Database
ProcSQL = "select p.`db`, p.`name`, p.`type`, p.`specific_name`, p.`language`, p.`sql_data_access`, p.`is_deterministic`, p.`security_type`, p.`param_list`, p.`returns`, p.`body`, p.`definer`, p.`created`, p.`modified`, p.`sql_mode`, p.`comment` from `mysql`.`proc` as p where p.`type` = 'PROCEDURE' and p.`db`='TestDatabase'"
set Rs = TConn.execute(ProcSQL) 'fetch all procedures from testdb
while NOT Rs.EOF
DropSQL = "DROP " & UCASE(Rs("type")) & " IF EXISTS `" & Rs("name") & "`" 'make the Drop statement
ShowSQL = "SHOW CREATE " & UCASE(Rs("type")) & " `" & Rs("name") & "`" 'make the SHOW statement
set SRs = TConn.execute(ShowSQL) 'fetch the definer for creating the procedure
IF NOT SRs.EOF then 'run trough alle procedures
CreateSQL = SRs("Create Procedure") & "" 'make the definer that creates the procedure
CreateSQL = "CREATE " & mid(CreateSQL,instr(1,CreateSQL,UCASE(Rs("type"))))
RConn.execute(DropSQL)
RConn.execute(CreateSQL)
end if
SRs.Close
set SRs = nothing
Rs.Movenext
Wend
Rs.Close
set Rs = nothing
TConn.Close
set TConn = nothing
RConn.close
set RConn = nothing
Jeg har 2 problemer med ovenstående:
1: hvis en procedure indeholder æøå returnerer den spørgsmålstegn istedet for og den kan af samme årsag ikke oprette proceduren i den anden DB (pga spørgsmålstegnene)
2: når den når til en større procedure får den kun noget af proceduren med (len() returnerer 4935 men lenb() returnerer 9870 - jeg har en fornemmelse af at den afslutter med en null et sted)
hvad gør jeg ?
-Leo