3 Stimmen

MySQL Wie erhalte ich Ergebnisse nach PREPARE und EXECUTE in einer gespeicherten Prozedur?

Mein aktueller Code ist :

DELIMITER \\

CREATE PROCEDURE sample (IN _car VARCHAR(15))
    BEGIN
        DECLARE _a INTEGER;
        SET @s = CONCAT('SELECT COUNT(*) FROM train WHERE ', _car, '<=0;');
        PREPARE stmt1 FROM @s;
        EXECUTE stmt1;
        DEALLOCATE PREPARE stmt1;

END\\

Aber ich wollte die Antwort der SELECT-Anweisung in meine _a Variable speichern.

Ich habe versucht, meinen Code zu ändern zu

SET @s = CONCAT('SELECT COUNT(*) INTO', _a,' FROM train WHERE ', _car, '<=0;');

Aber das hat nicht funktioniert.

Hilfe, bitte?

GELÖST!

DELIMITER \\

CREATE PROCEDURE sample (IN _car VARCHAR(15))
    BEGIN
        DECLARE _a INTEGER;
        SET @var = NULL;
        SET @s = CONCAT('SELECT COUNT(*) INTO @var FROM train WHERE ', _car, '<=0;');
        PREPARE stmt1 FROM @s;
        EXECUTE stmt1;
        SELECT @var;
        DEALLOCATE PREPARE stmt1;
END\\

:D

2voto

james_bond Punkte 6678

Wie hier angegeben, müssen Sie die Variablenzuweisung in der ursprünglichen Anweisungserklärung einschließen. Ihre Anweisung würde also so aussehen:

SELECT COUNT(*) FROM train WHERE ?<=0 INTO _a

Dann würden Sie es ausführen mit:

EXECUTE stmt1 using _car;

Und das Ergebnis erhalten mit:

select _a;

Lassen Sie mich wissen, ob es funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X