返回列表 回复 发帖

工作流开发问题求助

哪位做过oracle工作流的开发?
我现在做一个客户化工作流的通知,发现通知的正文只能是text格式,写html代码进去就按原文传回。
如果我把工作流定义中通知message用到的正文item改成document类型的话,生成通知报错,ora-06502字符串缓冲区不够。
这是什么原因呢?哪位有资料或例子可以参考一下?谢谢!
以前碰過類似狀況,當時我限制內容不得超過 29000 bytes ,這個值是我自己粗略估計,不是真正的上限值
你可能要先考慮如果超過上限,後續要如何處理。



            wf_engine.setitemattrtext(
               itemtype    =>  ls_itemtype          ,   -- in varchar2
               itemkey     =>  ls_itemkey           ,   -- in varchar2
               aname       =>  'MESSAGE_BODY'       ,
               avalue      =>     'PLSQLCLOB:XXHRP010.Show_Clob/'
                               || ls_itemtype
                               || ':'
                               || ls_itemkey        );

-------------------------------------------------------------------------------------------------

      ls_lengthb := to_char( lengthb(ls_document) );

      -- 當 CLOB 的 document 長度(lengthb) 超過限制時,會出現 error :
      --    numeric or value error: character string buffer too small
      -- 為避免此錯誤發生,將 document 長度控制在 29000 以內
      -- 如果超過,改顯示較少的 table 內容

         if   ls_lengthb > 29000
         then
            ls_document := '資料過多,超出讀取限制,請洽資訊室處理!!';
         end if;
谢谢楼上, 'PLSQLCLOB:XXHRP010.Show_Clob/'这一段是固定的写法还是什么?
终于搞明白了,发现了一个文档很不错,与大家分享
Oracle Workflow Developer's Guide
http://docs.huihoo.com/oracle/docs/B14099_19/integrate.1012/b12161/toc.htm
XXHRP010 是我客製的 Package
Show_Clob 是這個 Package 中的 Procedure

package 的 SPEC 如下 :
create or replace
package XXHRP010_WF_PKG as
   -- CREATE SEQUENCE XXHRP010_S INCREMENT BY 1;
   ------------------------------------------------------------------
   -- 取得最後一次版本日期
   ------------------------------------------------------------------
   function fs_get_version return varchar2;
   ------------------------------------------------------------------
   -- start process
   ------------------------------------------------------------------
   procedure startprocess (
      errbuf                 out   varchar2,
      retcode                out   varchar2,
      pis_creation_date  in        varchar2);
   ------------------------------------------------------------------
   -- 通知訊息
   ------------------------------------------------------------------
   procedure show_clob(
      document_id        in        varchar2,
      display_type       in        varchar2,
      document           in  out   varchar2,
      document_type      in  out   varchar2);
end XXHRP010_WF_PKG;


PLSQLCLOB 是固定寫法,你有 workflow 的文件就應該查得到
返回列表