我试图concat变量和字符串在存储过程中的mysql

ej83mcc0  于 2023-06-28  发布在  Mysql
关注(0)|答案(1)|浏览(64)

我试图在mysql存储过程中为select中的表名连接变量和字符串

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
DECLARE demo1 VARCHAR(100);
DECLARE demo2 VARCHAR(100);
DECLARE concatenated VARCHAR(100);
DECLARE concatenated2 VARCHAR(100);
SET demo1 = ('tour_');
SET demo2 = ('companytb');
SET concatenated = CONCAT('tour_', 'companytb');
SET concatenated2 = CONCAT_WS(demo1, demo2);
SELECT DISTINCT company_name FROM concatenated;
END

我尝试了这个,但我得到的错误
错误是
01911:41:29调用测试()
错误代码:1146表'codimbii_live.concatenated'不存在
0.000秒

kqlmhetl

kqlmhetl1#

正如@akina在评论中提到的,你需要使用一些准备好的语句,这里有一个例子:

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
  DECLARE demo1 VARCHAR(100);
  DECLARE demo2 VARCHAR(100);
  DECLARE concatenated VARCHAR(100);
  DECLARE concatenated2 VARCHAR(100);
  SET demo1 = ('tour_');
  SET demo2 = ('companytb');
  SET @sql = CONCAT('SELECT DISTINCT company_name FROM ', demo1, demo2);
  PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;
END

相关问题