3

我当前的代码是:

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

4

1 回答 1

2

如此处所述您需要在原始语句声明中包含变量赋值。所以你的陈述会是这样的:

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

然后你会执行它:

EXECUTE stmt1 using _car;

并通过以下方式获得结果:

select _a;

让我知道它是否有效。

于 2011-08-08T19:28:40.030 回答