1

我正在编写一个存储过程,其中我将变量用作表名,并在输出参数中检索查询结果

以下是存储过程`

DELIMITER //
CREATE  PROCEDURE db_test.test(IN tblname varchar(100),OUT Valv varchar(100))
BEGIN
SET @a = CONCAT('SELECT name INTO  Valv FROM ', tbname ,' limit 1') ;
PREPARE stmt1 FROM @a;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END;
//
DELIMITER ;

当我使用以下命令调用上述过程时

CALL db_test.test('db_test.t_names',@name);
select @name;

我收到错误,因为 PROCEDURE db_test.test 无法在给定的上下文中返回结果集

我已搜索此错误的解决方案,但找不到。请为上述查询提出解决方案。

4

2 回答 2

3

您必须在准备好的语句中使用用户变量。已经存在错误报告

DELIMITER //
CREATE  PROCEDURE db_test.test(IN tblname varchar(100),OUT Valv varchar(100))
BEGIN
SET @a = CONCAT('SELECT name INTO @Valv FROM ', tbname ,' limit 1') ;
PREPARE stmt1 FROM @a;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET Valv = @Valv;
END;
//
DELIMITER ;
于 2013-06-24T09:44:52.620 回答
0

尝试这个

DELIMITER //
CREATE  PROCEDURE db_test.test(IN tblname varchar(100),OUT Valv varchar(100))
BEGIN
SET @a = CONCAT('SELECT name INTO  ', Valv ,' FROM ', tbname ,' limit 1') ;
PREPARE stmt1 FROM @a;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END;
//
DELIMITER ;
于 2013-06-24T06:11:25.343 回答