【发布时间】:2013-11-14 00:10:36
【问题描述】:
我正在 MySQL 中创建一个存储过程,需要将 SQL 查询的结果分配给一个变量。问题是,为了创建 SELECT 语句,我必须使用 CONCAT() 函数,因为我正在传递参数。
看来您不能在 CONCAT 函数中使用变量。关于如何实现这一目标的任何想法?我正在尝试编写的程序如下:
DELIMITER //
CREATE PROCEDURE `my_proc` (IN tbl VARCHAR(20), IN col VARCHAR(20), IN id INT)
BEGIN
DECLARE @myval VARCHAR(100);
SET @t1 =CONCAT('SELECT ',col,' FROM ',tbl,' INTO @myval WHERE id = ',id );
PREPARE stmt1 FROM @t1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END //
执行此操作会给我一个 SQL 语法错误。
【问题讨论】:
-
哪一行报错?
-
您正在设置
@t1,但您声明了@myval。对吗? -
这里是错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@myval VARCHAR(100); SET @t1 =CONCAT('SELECT ',col,' FROM ',tbl,' INTO @myv' at line 3) -
@acfrancis 是的,这是正确的。我想将结果设置为
@myval。@t1只是 select 语句的字符串。 -
是的,但您仍然需要声明
@t1不是吗?
标签: mysql sql stored-procedures