sha*_*nuo 0 mysql stored-procedures prepared-statement
我需要从表"ticket"中选择所有列,除了一列"depname"以下预准备语句不能按预期工作.
PREPARE stmt1 FROM 'SELECT ? from magon.ticket limit 2';
select GROUP_CONCAT(COLUMN_NAME) into @clm from COLUMNS where TABLE_SCHEMA = 'magon' and TABLE_NAME = 'ticket' and COLUMN_NAME NOT IN ('depname') GROUP BY TABLE_SCHEMA, TABLE_NAME;
execute stmt1 using @clm;
Run Code Online (Sandbox Code Playgroud)
它返回列列表两次(由于限制2),但不返回实际数据.
遗憾的是,您无法参数化列名和表名,因为它们是标识符.但是你可以连接字符串中的值,
SET @colName = (SELECT GROUP_CONCAT(COLUMN_NAME)
FROM COLUMNS
WHERE TABLE_SCHEMA = 'magon' AND
TABLE_NAME = 'ticket' AND
COLUMN_NAME NOT IN ('depname')
GROUP BY TABLE_SCHEMA, TABLE_NAME);
PREPARE stmt1 FROM CONCAT('SELECT ', @colName ,' FROM magon.ticket LIMIT 2');
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8974 次 |
最近记录: |