Stored procedures kopiëren (MySQL): verschil tussen versies
Naar navigatie springen
Naar zoeken springen
(8 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 9: | Regel 9: | ||
</pre> | </pre> | ||
+ | == mysql.proc == | ||
+ | Online vind ik regelmatig oplossingen die gebruik maken van de systeemtabel <code>mysql.proc</code>. Deze bestaat echter niet in de nieuwere versies van MySQL [https://ocelot.ca/blog/blog/2017/08/22/no-more-mysql-proc-in-mysql-8-0/]. | ||
+ | |||
+ | == information_schema == | ||
+ | |||
+ | Info over sprocs kun je vinden in <code>information_schema.routines</code>: | ||
+ | |||
+ | <pre> | ||
+ | # routines | ||
+ | ########## | ||
+ | # | ||
+ | select | ||
+ | * | ||
+ | from | ||
+ | information_schema.routines | ||
+ | where | ||
+ | routine_schema=database() | ||
+ | and | ||
+ | routine_type = "PROCEDURE"; | ||
+ | </pre> | ||
+ | |||
+ | Info over de input-parameters vind je in tabel <code>information_schema.parameters</code>: | ||
+ | |||
+ | <pre> | ||
+ | # parameters | ||
+ | ############ | ||
+ | # | ||
+ | select | ||
+ | * | ||
+ | from | ||
+ | information_schema.parameters | ||
+ | where | ||
+ | specific_schema=database(); | ||
+ | </pre> | ||
+ | |||
+ | Om hieromheen een routine te schrijven voor kopiëren van sprocs, lijkt me een hoop gedoe. | ||
== Bronnen == | == Bronnen == | ||
* https://forums.mysql.com/read.php?98,370486,371407#msg-371407 | * 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 |
Huidige versie van 5 nov 2020 om 14:59
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