Analizandolo bien, te convendria un cursor mejor.
Admito que estoy debil en cursores en MySQL ya que me dedico mas al PL/SQL de Oracle que de MySQL, por ende tuve que buscar referencias de sintaxis de cursor en MySQL para guiarme. Esto a lo mejor te pueda ayudar (un analista programador podria convertir lo siguiente en sus necesidades):
Imaginate que tengo esta tabla y estos datos:
Ahora creo un procedimiento almacenado con un cursor:
Un procedimiento que soporta 3 parametros, dichos parametros pueden ir entre 1,1,10 o 2,2,4 como tu ejemplo expone, por ejemplo:
Analizalo
Admito que estoy debil en cursores en MySQL ya que me dedico mas al PL/SQL de Oracle que de MySQL, por ende tuve que buscar referencias de sintaxis de cursor en MySQL para guiarme. Esto a lo mejor te pueda ayudar (un analista programador podria convertir lo siguiente en sus necesidades):
Imaginate que tengo esta tabla y estos datos:
Código (sql) [Seleccionar]
mysql> select * from juicio;
+--------+---------+---------+---------+
| id_jui | tip_jui | aut_jui | sal_jui |
+--------+---------+---------+---------+
| 1 | 1 | 1 | 4 |
| 1 | 1 | 1 | 4 |
| 1 | 1 | 1 | 4 |
| 1 | 1 | 1 | 10 |
| 1 | 1 | 1 | 10 |
| 1 | 2 | 2 | 10 |
| 1 | 2 | 2 | 10 |
| 1 | 2 | 2 | 10 |
| 1 | 2 | 2 | 4 |
+--------+---------+---------+---------+
9 rows in set (0.00 sec)
Ahora creo un procedimiento almacenado con un cursor:
Código (sql) [Seleccionar]
mysql> delimiter /
mysql> create procedure hongo(p1 int, p2 int, p3 int)
-> begin
-> declare terminado int default 0;
-> declare b,c int;
-> declare cur1 cursor for SELECT count(id_jui) FROM `juicio` WHERE tip_jui = p1 AND aut_jui = p1 AND sal_jui = p3;
-> declare cur2 cursor for SELECT count(id_jui) FROM `juicio` WHERE tip_jui = p2 AND aut_jui = p2 AND sal_jui = p3;
-> declare continue handler for sqlstate '02000' set terminado = 1;
-> open cur1;
-> open cur2;
-> repeat
-> fetch cur1 into b;
-> set @todo1 := b;
-> fetch cur2 into c;
-> set @todito1 := c;
-> until terminado end repeat;
-> close cur1;
-> close cur2;
-> end;
-> /
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
Un procedimiento que soporta 3 parametros, dichos parametros pueden ir entre 1,1,10 o 2,2,4 como tu ejemplo expone, por ejemplo:
Código (sql) [Seleccionar]
mysql> call hongo(1,2,10);
Query OK, 0 rows affected (0.00 sec)
mysql> select @todo1;
+--------+
| @todo1 |
+--------+
| 2 |
+--------+
1 row in set (0.00 sec)
mysql> select @todito1;
+----------+
| @todito1 |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)
mysql> call hongo(2,2,4);
Query OK, 0 rows affected (0.00 sec)
mysql> select @todo1;
+--------+
| @todo1 |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
mysql> select @todito1;
+----------+
| @todito1 |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
Analizalo
