Por lo pronto, un par de cosas:
1) MySQL no tiene tipos de dato TABLE, LIST, o RECORDSET, y los SET y ENUM sólo aplican a tablas, y no a SP. Con esto quiero decir que no puedes pasar una lista de valores, ni recibir en un parámetro de salida (OUT) y set de datos. SOlo datos únicos.
2) Un SP puede devolver una tabla resultado, pero no como parámetro, sino como salida de la ejecución. Para recuperarla dependerá del lenguaje de programación usado (OFF TOPIC en este foro).
3) El que uses una tabla en un JOIN en una consulta de una parte del SP, no implica que las siguientes consultas puedan adivinar que vas a volver a usar la tabla. Cada vez que haces un SELECT con dos o más tablas, en el FROM de CADA UNO, se debe n indicar las tablas implicadas, y tu estás omitiendo una tabla en las dos consultas finales.
A nivel de programación de SP, lo más simple, si vas a hacer una cosa u otra dependiendo de la existencia de un dato, es simplemente validar primero ese dato e una condición TRUEJ/FALSE, y no recopilar el dato respuesta al principio. Consumirás menos recursos y la lógica será más simple.
Para tu caso lo que necesitas es sólo el ID del supermercado que buscas, le resto sería lógica:
Código MySQL:
Ver original
-- Existe el producto al menos en un super.
FROM supermercados_productos SP
WHERE superID
= idSuper
AND productoID
= IdProducto
FROM supermercados_productos
WHERE cod
= idProducto
AND supermercadoID
= SUperID
; FROM supermercados_productos
WHERE cod
= idProducto
AND supermercadoID ¡
= SUperID
SELECT -1 error
, 'NO existe l producto' Msj
;