Stored procedures kopiëren (MySQL)
Ik werk vaak met projectdatabases. Bij het starten van zo'n project, moet ik eerst alle relevante sprocs handmatig kopiëren. Dat kan gemakkelijker:
Show create procedure
Je kunt een heel eind komen met show create procedure <procedure-naam>
:
show create procedure fetch_table;
mysql.proc
Online vind ik regelmatig oplossingen die gebruik maken van de systeemtabel mysql.proc
. Deze bestaat echter niet in de nieuwere versies van MySQL [1].
information_schema
Info over sprocs kun je vinden in information_schema.routines
:
# routines ########## # select * from information_schema.routines where routine_schema=database() and routine_type = "PROCEDURE";
Info over de input-parameters vind je in tabel information_schema.parameters
:
# parameters ############ # select * from information_schema.parameters where specific_schema=database();
Om hieromheen een routine te schrijven voor kopiëren van sprocs, lijkt me een hoop gedoe.
Bronnen
- https://forums.mysql.com/read.php?98,370486,371407#msg-371407
- https://ocelot.ca/blog/blog/2017/08/22/no-more-mysql-proc-in-mysql-8-0/
- https://dev.mysql.com/doc/refman/8.0/en/information-schema-routines-table.html
- https://dev.mysql.com/doc/refman/8.0/en/information-schema-parameters-table.html
- https://dev.mysql.com/doc/refman/8.0/en/show-create-procedure.html