1. 程式人生 > >oracle 拼接字串的函式寫法

oracle 拼接字串的函式寫法

需求:首先根據角色ID (JSID)  查到角色組ID (JSZID),根據角色組ID (JSZID)  找到對應許可權的文件ID (DOCID)  根據文件ID  (DOCID)  找到附件的ID (FIEFLID)  根據附件ID找到附件編號(filebh) 附件名稱(filemc) 附件字尾名(fileex

得到這三個欄位的拼接字串

所以sql 語句如下

 string sequel = string.Format(@" select DOCID,DOCBH,DOCMC,DOCNR,FUN_GETDOC_FILE(DOCID)AFFIX from STA_DOC   
                                                                                             where FLID='{0}' and DOCID in
                                                                                                     (select DOCID from STA_DOC_JSZ_QX where JSZID in
                                                                                                              (select JSZID from STA_JS_JSZ where JSID='{1}'))", flId, roleId);

FUN_GETDOC_FILE(DOCID)

create or replace function FUN_GETDOC_FILE(d in varchar2) return varchar2 is
 str_list varchar2(4000) default null;--連線後字串 
 str varchar2(20) default null;--連線符號 

begin

  for x in 
          (select CONCAT( CONCAT(filebh,filemc),fileex)a from STA_DOC_FILE   where fileid in 
                                                        (select Fileid from STA_DOC_FJ where DOCID =d)) loop
    str_list := str_list || str || x.a; 
    str := ', '; 
end loop;             
  return(str_list);
end FUN_GETDOC_FILE;
CONCAT:oracle本身函式
參考出處:<a target=_blank href="http://www.cnblogs.com/freeliver54/archive/2013/07/01/3165144.html">http://www.cnblogs.com/freeliver54/archive/2013/07/01/3165144.html</a>
</pre><pre name="code" class="sql">另外 oracle還有一個合併行為列的函式 wm_concat