Exécutez une requête dans une base de données MySQL procédure stockée si une condition est vraie

Je suis en utilisant la base de données MySQL et d'essayer de créer une procédure stockée. Comment puis-je faire en sorte que si le résultat de la requête1 a pas de dossiers, puis exécuter une autre requête?

Voici ce que j'ai à ce jour:

/* CREATE DB */
CREATE DATABASE mydata;
use mydata;
/* TABLE */
CREATE TABLE mydata (
ID BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name                        VARCHAR(255) NOT NULL,
Value                       VARCHAR(255) NOT NULL
) ENGINE=InnoDB;
INSERT INTO mydata (Name, Value) VALUES ("testname", "testvalue");

/* STORED PROCEDURE */
delimiter //
CREATE PROCEDURE myproc(IN myTable VARCHAR(255), 
                        IN myValue VARCHAR(255), 
                        IN myValueTwo VARCHAR(255))
BEGIN
    SET @iTable=myTable;
    SET @iValue=myValue;
    SET @iValueTwo=myValueTwo;

    SET @query = CONCAT('SELECT Name FROM ', @iTable, 
        ' WHERE Value="', @iValue, '"');
    SET @querytwo = CONCAT('SELECT Name FROM ', @iTable, 
        ' WHERE Value="', @iValueTwo, '"');
    PREPARE QUERY FROM @query;
    EXECUTE QUERY;

END //
delimiter ;

/* CALL */
call myproc("mydata", "testvalue", "");

Je veux exécuter une requête, et d'exécuter un secondaire de requête que si la première n'a pas de ligne. Quelle est la meilleure façon de le faire?

  • est-il nécessaire que les tables et les insérer déclaration doit être dynamique? À l'aide de sql dynamique n'est pas la bonne approche.
InformationsquelleAutor user391986 | 2012-03-23