我需要在存储过程里面做一个事情,就是通过传入的内容来判断具体去查询哪个字段,所以说字段名就是动态的。怎样才能让查询语句中的字段名使用变量?
并且要在这个查询语句执行后,把其中几个字段的值拼接成字段串,如:field1/field2/field3/field4
如果是静态的sql,倒可以用for xx in (查询语句) loop 这样,但是字段名为变量的话,怎么做呢??

解决方案 »

  1.   

    字段拼接:field1||field2||field3||field4,
    对date类型的要将其转换成字符型的,如:to_char(date1,'yyyy-mm-dd')。
     
      

  2.   

    用动态SQL啊
    先拼成SELECT语句,然后用execute immediat来执行
      

  3.   

    execute immediat执行的话,可以放到for xx in ()里面吗??哦,另外,我拼接的话,是要把记录集里面的每一行的字段都拼接到一起的。那么我弄一个变量来保存的话,它支持+=的操作吗?
      

  4.   

    先去把基础好好学习一下吧。
    http://sourcecode.cangzhuo.com/Code/Oracle/CatalogOracle.htm
      

  5.   

    UPDATE cet4word  
    SET    means = 
    (  
    SELECT GROUP_CONCAT(CONCAT(means))
              FROM   englishdic  
              WHERE  englishdic.word = cet4word.word
    GROUP BY word
          )  
    WHERE  word IN (SELECT word    FROM   englishdic)  
      

  6.   

    UPDATE cet4word  
    SET    means = 
    (  
    SELECT GROUP_CONCAT(CONCAT(means))
              FROM   englishdic  
              WHERE  englishdic.word = cet4word.word
    GROUP BY word
          )  
    WHERE  word IN (SELECT word    FROM   englishdic)