Avatar billede lionhcfs Nybegynder
10. marts 2008 - 17:29 Der er 1 løsning

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
Avatar billede lionhcfs Nybegynder
09. februar 2009 - 18:07 #1
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester