大家好,我在写一个MySQL的存储过程,我想让将列名设为存储过程中变量,然后根据列名的不同来进行查询,请问大家,其相关的语法是什么呢,请诸位指点迷津。

解决方案 »

  1.   

    没有办法,MYSQL并不支持select @varColumnName from  table
    你只能用@sql = concat ("select " ,  @varColumnName, " from table1)
    prepare stmt from @sql;
    execute @sql这种方法。
    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  2.   

    只能用动态生成SQL语句,再执行的方法
      

  3.   

    再多问一句,如果用Update语句,是不是应该这样写
    @sql = concat ("update" ,table, " set @varColumnName=value)
    prepare stmt from @sql; 
    execute @sql
     
      

  4.   

    @sql = concat ("update table  set ",@varColumnName, "=123");
      

  5.   

    concat  是字符串加运算。你可以参考一下手册中的说明和例子。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  6.   

    @varColumnName:字段名?
    @sql = concat ("update" ,table, " set ',@varColumnName,'=',value)
    注意字段类型
      

  7.   

    字符型:
    @sql = concat ("update" ,table, " set ',@varColumnName,'="',value,'"')
      

  8.   

    那个@sql在最开始定义时,怎样写好呢
      

  9.   

    字符型: 
    @sql = concat ("update" ,table, " set ',@varColumnName,'="',value,'"') 引号应该是有问题的
      

  10.   


    @sql = concat ("update" ,table, ' set ',@varColumnName,'="',value,'"')
      

  11.   

    你的table 是变量还是表名?@sql = concat ('update table set ',@varColumnName,'=\'AABB\'')
      

  12.   

    我现在的语句是
    set @sql=concat("update",ufield_info,'set',@depname,'="',10,'"');结果是错误的
      

  13.   

    正确写法应是
    set @sql=contact('update tablename','set',@depname,'",value,"')
    再次谢谢所有回帖的朋友们