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