java方法:
public class Test{
public static String create(String s) {
return s.length()+"";
}
}创建函数:
create or replace function create(h in varchar2) return varchar2 as language java name 'Test.create(java.lang.String) return String'; 通过create函数来调用java的Test.create方法。
select create('[参数]') from dual;create函数传的参数是一个大概有三千多个字符的字符串,  可是调用的返回值是1999? 这是怎么回事? 是不是对参数长度有限制?该怎么办? 我把h in varchar2改成h in Long也不行呃。

解决方案 »

  1.   

    连接到: 
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining optionsSQL> create or replace and compile java source named testname as
      2  public class Test{
      3    public static String create(String s) {
      4      return s.length()+"";
      5    }
      6  }
      7  /Java 已创建。SQL> create or replace function mycreate(h in varchar2) return varchar2 as 
      2  language java name 'Test.create(java.lang.String) return String';
      3  /函数已创建。SQL> 
    SQL> select mycreate(lpad('0',2100,'1')) from dual;MYCREATE(LPAD('0',2100,'1'))
    ----------------------------------------------------------------------------
    2100SQL> 
      

  2.   


    我不是这么测试的呃。
    我是把那三千多个字符写到了一个文件里面,然后放到了网上, 然后利用
    select mycreate(UTL_HTTP.request('http://xxxx/xx.txt')) from dual;这样的方式测试的,总是返回1999,不解啊。 
      

  3.   

    晕,我知道了, 是UTL_HTTP.request 只返回了1999个字符, 这是咋 回事呢。
      

  4.   

    这就是了
    web的url最大为2000字节,多出的会自动截掉