我有闲置的存储过程:
CREATE PROCEDURE `get`(IN tb VARCHAR(50), IN id INTEGER)
BEGIN
SELECT * FROM tb WHERE Indx = id;
END//
当我调用 get(user,1) 时,我得到以下信息:
ERROR 1054 (42S22): Unknown column 'user' in 'field list'
我有闲置的存储过程:
CREATE PROCEDURE `get`(IN tb VARCHAR(50), IN id INTEGER)
BEGIN
SELECT * FROM tb WHERE Indx = id;
END//
当我调用 get(user,1) 时,我得到以下信息:
ERROR 1054 (42S22): Unknown column 'user' in 'field list'
您不能在 SQL 中使用变量作为表名,因为它会在编译过程时编译该变量。尝试使用准备好的语句:
CREATE PROCEDURE `get`(IN tb VARCHAR(50), IN id INTEGER)
BEGIN
PREPARE stmt1 FROM CONCAT('SELECT * FROM ', tb, ' WHERE Indx = id');
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END//
但是请注意,这会变慢。
你能称之为get('user',1)
吗?
IN tb VARCHAR(50)
让它期待一个“字符串”,你传递了一些 SQL 解析器解释为字段的东西user
,这是不知道的。