Reputation: 31
I need a stored procedure to perform an action according to a condition that is saved in a PHP variable. This stored procedure would run one of possible 2 insert operations:
if $var = 1 then insert 1 else insert 2
Is this possible or will I have to do 2 stored procedures and do the validation in the php script?
Example:
DELIMITER $$
CREATE PROCEDURE example_sp
(in val1 char(100), in val2 char(50), in val3 char(10), in val4 char(50))
BEGIN
IF($var = 1)
THEN
INSERT INTO table1 (val1, val2) VALUES (val1, val2);
ELSE
INSERT INTO table2 (val1, val2) VALUES (val1, val2);
END IF;
END $$
DELIMITER ;
Upvotes: 1
Views: 679
Reputation: 49395
No you need only one stored procedure.
but for this you need dynamic sql
DELIMITER $$
CREATE PROCEDURE example_sp
(IN var int, in val1 char(100), in val2 char(50), in val3 char(10), in val4 char(50))
BEGIN
IF(var = 1)
THEN
SET @sql := CONCAT("INSERT INTO table1 (",val1,",", val2,") VALUES (?,?);");
SET @a := val1;
SET @b := val2;
ELSE
SET @sql := CONCAT("INSERT INTO table2 (",val1,",", val2,") VALUES (?,?);");
SET @a := val1;
SET @b := val2;
END IF;
PREPARE stmt FROM @sql;
EXECUTE stmt USING @a,@b;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
And in PHP
$stmt=$db->prepare("CALL example_sp(?,?,?,?,?)");
$stmt->bind_param('issss',$var,$val1,$val2,$val3,$val4);
$stmt->execute();
Upvotes: 1