mysql存储过程动态if-else块,如eval

mysql存储过程动态if-else块,如eval,mysql,Mysql,这是一个简单的工作示例 DROP PROCEDURE IF EXISTS `test`; CREATE PROCEDURE `test`( IN invar VARCHAR(255), OUT outvar VARCHAR(255) ) BEGIN IF(invar = 1) THEN SET outvar = 'ok'; END IF; END; 但是,在mysql中有可能做类似的事情吗 DROP PROCEDURE IF EXISTS `test`;

这是一个简单的工作示例

DROP PROCEDURE IF EXISTS `test`;
CREATE PROCEDURE `test`(
  IN invar VARCHAR(255),
  OUT outvar VARCHAR(255)
)
BEGIN
    IF(invar = 1) THEN
        SET outvar = 'ok';
    END IF;
END;
但是,在mysql中有可能做类似的事情吗

DROP PROCEDURE IF EXISTS `test`;
CREATE PROCEDURE `test`(
  IN invar VARCHAR(255),
  OUT outvar VARCHAR(255)
)
BEGIN
    
    SET @vs_query = CONCAT(
        "IF(invar = 1)",
        "SET outvar = 'ok';",
        "END IF;"
    );

    PREPARE stmt FROM @vs_query;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt; 
END;

类似于mysql中的EVAL@vs_查询字符串?

您有任何异常吗?如果是的话,你能分享吗?不,任何例外。。。成功执行但不返回任何内容。预期outvar=ok