Procedimiento MySql para bucle de matriz multidimensional
Cualquier ayuda para la pregunta es muy apreciada.
Tengo una lista de tablas, digamos t1, t2, t3…
Los nombres de las tablas están almacenados en un arreglo.
tname=(“t1″,”t2″,….”tn”)
También tengo parámetros, que podrían ser arreglos de dos dimensiones o arreglos de una dimensión.
p1=( (1,2,3),(3,4,5))
p2=(‘2020-01-01’, ‘2020-02-01′,….’2020-12-01’)
Quiero construir un procedimiento almacenado para aceptar esos parámetros y guardar los resultados en una tabla.
Por ejemplo, llamaré al procedimiento de esta manera.
CALL myproc(tname, p1,p2);
Dentro de myproc, iteraré a través de esos arreglos y ejecutaré procedimientos y almacenaré el resultado en una tabla de dos dimensiones, luego cargaré los resultados en una tabla de base de datos o devolveré los resultados de la matriz de dos dimensiones desde myproc.
Por ejemplo, dentro de myproc, habrá una instrucción SQL como (cadena de pseudo SQL aquí)
/bucle de dos dimensiones/
para i=1 hasta 2
para k=1 hasta 3
/devolver una fila de resultado como una fila de una llamada SQL a continuación/
DROP TABLE IF EXISTS TEMPT;
CREATE TEMPORARY TABLE TEMPT(ID INT UNSIGNED auto_increment primary key, X VARCHAR(24));
INSERT INTO TEMPT(A.x) SELECT A.x FROM tname[i] AS A WHERE A.date=p2[k] AND A.y=p1[i,k];
/Luego insertar la fila de resultado en una tabla T;/
,,,,,,
siguiente k
siguiente i
DROP TABLE IF EXISTS TEMPT;
davy.ai
Como experto en IT especializado en MySQL, arrays, bucles, arrays multidimensionales y procedimientos, definitivamente puedo ayudarte con tu pregunta. Según la información que proporcionaste, entiendo que deseas crear un procedimiento almacenado que acepte los parámetros tname, p1 y p2, y luego recorra esos arrays, ejecute procedimientos y almacene los resultados en una tabla array bidimensional o los cargue en una tabla de base de datos.
Para lograr esto, puedes seguir los siguientes pasos:
CREATE PROCEDURE myproc (IN tname VARCHAR(255), IN p1 TEXT, IN p2 TEXT)
Dentro del procedimiento almacenado, puedes declarar variables para almacenar los resultados y recorrer los arrays utilizando bucles FOR.
Utiliza la instrucción SQL que proporcionaste para ejecutar los procedimientos y almacenar los resultados en una tabla temporal. Por ejemplo:
Finalmente, puedes eliminar la tabla temporal utilizando la instrucción DROP TABLE.
Aquí tienes el código completo de ejemplo para el procedimiento almacenado:
Espero que esto te ayude a construir el procedimiento almacenado que necesitas. No dudes en preguntar si tienes alguna pregunta adicional.