Reputation: 149
I am using MyPhpAdmin 4.2 visual editor. When I call the stored procedure and pass the parameter values, I do not get any rows returned and outputting the value of the parameters shows null values.
SET @p0='1'; SET @p1='1'; SET @p2='41'; SET @p3='1'; CALL `ps_stp_getPrograms`(@p0, @p1, @p2, @p3);
BEGIN
CREATE TEMPORARY TABLE temp_progs(prog_id bigint(20));
IF @countyID > 0 THEN
INSERT INTO temp_progs (prog_id)
SELECT 1 from ps_prog_county
WHERE ps_prog_county.county_id = @countyID AND ps_prog_county.prog_id = @progID;
END IF;
IF @ServiceID > 0 THEN
INSERT INTO temp_progs (prog_id)
SELECT 1 from ps_prog_services
WHERE ps_prog_services.svc_id = @ServiceID AND ps_prog_services.prog_id = @progID;
END IF;
IF @popID > 0 THEN
INSERT INTO temp_progs (prog_id)
SELECT 1 from ps_prog_served
WHERE ps_prog_served.served_id = @popID AND ps_prog_served.prog_id = @progID;
END IF;
SELECT DISTINCT prog_id FROM temp_progs;
SELECT @progID, @countyID, @ServiceID, @popID;
END
If I set the values it returns as expected
SET @progID = 1;
SET @countyID = 1;
SET @ServiceID = 41;
SET @popID = 1;
Upvotes: 0
Views: 1528
Reputation: 23982
You have to use the same names of parameters of a stored procedure within its body.
When you use user variables they are not same as SP in parameters.
Example:
delimiter //
create procedure
ps_stp_getPrograms(
IN progID int
, IN countyID int
, IN ServiceID int
, IN popID int
)
BEGIN
CREATE TEMPORARY TABLE temp_progs( prog_id bigint(20) );
IF countyID > 0 THEN
INSERT INTO temp_progs( prog_id )
SELECT 1 from ps_prog_county
WHERE ps_prog_county.county_id = countyID
AND ps_prog_county.prog_id = progID;
END IF;
IF ServiceID > 0 THEN
INSERT INTO temp_progs ( prog_id )
SELECT 1 from ps_prog_services
WHERE ps_prog_services.svc_id = ServiceID
AND ps_prog_services.prog_id = progID;
END IF;
IF popID > 0 THEN
INSERT INTO temp_progs ( prog_id )
SELECT 1 from ps_prog_served
WHERE ps_prog_served.served_id = popID
AND ps_prog_served.prog_id = progID;
END IF;
SELECT DISTINCT prog_id FROM temp_progs;
SELECT progID, countyID, ServiceID, popID;
END;
//
delimiter ;
Upvotes: 2