Sql = "CREATE OR REPLACE FUNCTION GETCLOBW " & _
    "( " & Chr(13) & _
    "table_name  in  varchar2, " & Chr(13) & _
    "P_where  in  varchar2, " & Chr(13) & _
    "field_name  in  varchar2, " & Chr(13) & _
    "v_pos  in  number)  return  varchar2 " & Chr(13) & _
    "is " & Chr(13) & _
    "lobloc  clob; " & Chr(13) & _
    "buffer  varchar2(32767); " & Chr(13) & _
    "amount  number  :=  2000; " & Chr(13) & _
    "offset  number  :=  1; " & Chr(13) & _
    "query_str  varchar2(100); " & Chr(13) & _
    "begin " & Chr(13) & _
    "query_str  :='select  '|| field_name ||'  from  '|| table_name ||' :wh'; " & Chr(13) & _
    "--initialize  buffer  with  data  to  be  found " & Chr(13) & _
    "EXECUTE  IMMEDIATE  query_str  INTO  lobloc  USING  P_where; " & Chr(13) & _
    "offset:=offset+(v_pos-1)*2000; " & Chr(13) & _
    "dbms_lob.read(lobloc,amount,offset,buffer); " & Chr(13) & _
    "return  buffer; " & Chr(13) & _
    "exception " & Chr(13) & _
    "when others then " & Chr(13) & _
    "   Return '系统提示——暂无数据'; " & Chr(13) & _
    "end;"

解决方案 »

  1.   

    错,我就是写成了脚本,问题是,
        Set OraSqlStmt = OraDatabase.createSQL(Sql, 0&)
        Set OraSqlStmt = Nothing
    后,总是显示invalid状态,实际上,我知道以上的脚本应该是没有问题的。
      

  2.   

    而我用debug.print 
    获得sql的表达式,在sql plus中执行,就直接显示valid状态,请问,有哪里有问题啊???
      

  3.   

    在dba studio 当中,我的函数不需要做任何改动,只要打开编辑,点击确定。状态栏此时还是invalid,关闭编辑窗口,再点击函数,看其状态就是valid,请问这个过程中究竟执行了什么。奇怪的事,create table 问什么就没有问题呢?