aside from the fact that you want to create a stored procedure I commented that the best thing for multi-table queries is to use JOINS, since they simplify the workload at the time of the consultations; in the following lines you will notice that instead of passing the value of the field as text string is "admin", use the id that identifies the category of admins
SELECT usuarios.*, categorias.* FROM usuarios
JOIN categorias
ON usuarios.id_categoria = categorias.id
WHERE usuarios.id_categoria = 1;
Now if you want all the users that are not admins, just pass the id that identifies that category or role or as you have named it in your table
In my example, id 1 is for admins and id 2 is for guests, it's just a matter of changing those values
// UPDATE
In order to create your AP, follow my next example and then send it to call
DELIMITER $$
CREATE PROCEDURE datos()
BEGIN
SELECT usuarios.*, categorias.* FROM usuarios
JOIN categorias
ON usuarios.id_categoria = categorias.id
WHERE usuarios.id_categoria = 1;
END $$
call datos();
As you can see if you only do the PA it will not throw anything, but if you execute call followed by the PA name it will show you its functionality
At the end if you want to know or remember the names of the PAs that you created, just execute the following command Important do not alter the ones you did not create
SHOW PROCEDURE STATUS;