MySQL Как получить результаты после ПОДГОТОВКИ и ВЫПОЛНЕНИЯ в хранимой процедуре? - PullRequest
1 голос
/ 08 августа 2011

Мой текущий код:

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\\

Но я хотел записать ответ оператора SELECT в мою переменную _a.

Я попытался изменить свой код на

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

Но это не сработало.

Помогите, пожалуйста?

РЕШИТЬ!

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

1 Ответ

2 голосов
/ 08 августа 2011

Как указано здесь , вам необходимо включить присвоение переменной в исходное объявление оператора.Таким образом, ваше утверждение будет выглядеть примерно так:

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

Тогда вы выполните его с помощью:

EXECUTE stmt1 using _car;

И получите результат с помощью:

select _a;

Пустья знаю, если это работает.

...