【发布时间】:2015-08-07 13:41:09
【问题描述】:
存储过程定义:
DECLARE dbName varchar(255);
DECLARE tableName varchar(255);
DECLARE fullPath varchar(255);
DECLARE conditions varchar(255);
SET dbName = idbname;
SET tableName = itablename;
SET fullPath = CONCAT("'",dbName,"'",'.',"'",tableName,"'");
SET checkExists = 0;
我正在创建一个存储过程,其中 dbname 和 tablename 是动态的,但是我被困在这个查询的选择方面。
我正在尝试用传递到存储过程中的值来替换 _test.user。
SELECT count(*) INTO checkExists FROM `_test`.`user` WHERE id = 1;
但是这行会报错
SELECT count(*) INTO checkExists FROM fullPath WHERE id = 1;
错误:
Procedure execution failed
1146 - Table 'dbname.fullpath' doesn't exist
我也试过这样的 CONCAT()
set conditions = CONCAT('SELECT count(*) INTO ',checkExists, ' FROM ', fullPath, ' WHERE id=', 1);
但是我什至不知道如何在选择中使用它?感谢您的帮助。
【问题讨论】:
-
看看这是否有帮助:dev.mysql.com/doc/refman/5.1/en/…
-
是的,准备好的语句可以与我的 concat 语句一起使用。我试图找出为什么我不能通过传入一个变量来正常进行选择。或者如果可能的话
标签: mysql database stored-procedures