create PROCEDURE dd(in num varchar(10))
begin
select num,aid  from qsurvey where sex='2' group by aid;
end存储过程代码如上,num输入的是表中的字段名称,比如qsurvey表里面有个字段是age,当输入这个变量'age'的时候,查询出来的并不是这个字段的值,是age这个常量字符串,我该怎么办?在线等啊!

解决方案 »

  1.   

    create PROCEDURE dd(in num varchar(10))
    begin
    declare @sql varchar(1000);
    set @sql=concat('select ',num,'aid from qsurvey where sex=''2'' group by aid;');
    prepare stmt from @sql;
    execute stmt;
    end
      

  2.   

    用字符串累加生成SQL语句,再执行delimiter $$
    create PROCEDURE dd(in num varchar(10))
    begin
    set @asql=concat('select ',num,'aid from qsurvey where sex=\'2\' group by aid;');
    prepare stmt from @asql;
    execute stmt;
    DEALLOCATE PREPARE stmt; 
    end$$
    delimiter ;
      

  3.   

    我测试过了 可以正常使用
    表字段变量
        set @asql=concat('select ',num, ' from dede_fm;');
        prepare stmt from @asql;
        execute stmt;
        DEALLOCATE PREPARE stmt; 
        
        表变量
        set @asql=concat('select * from ',biao);
        prepare stmt from @asql;
        execute stmt;
        DEALLOCATE PREPARE stmt;