以下语句能编译通过
CREATE OR REPLACE FUNCTION GetPY(chineseStr varchar2, separator in varchar2) return varchar2
AS
LANGUAGE C NAME "GetInitialPY"
LIBRARY PYLIB;问题是:
1、DLL中separator是字符串,允许null或者"",
但在oracle里,""当作null处理,并且在使用GetPY函数时
不能:
GetPY("中国", null),报ORA-01405提取的值为null。
GetPY("中国", ""),报ORA-01405提取的值为null。该怎样定义函数GetPY,让其允许参数为null.
2、我在 DLL 里有一个函数参数是 char型 (一个字符)
在Oracle中用什么代替??

解决方案 »

  1.   

    char类型在Oracle中可以用Varchar2的,另外在Oracle中调用应该是单引号,为什么传入双引号,是列名吗?ORA-01405一般发生在将NULL值送入变量时,比如select into 或 fetch into,请检查。
      

  2.   

    传入双引号是我笔误GetPY('中国', null)报ORA-01405提取的值为null。
      

  3.   

    1、在函数中是否调用了数据库内容?
    2、在SQL中具体的使用代码是什么?
      

  4.   

    1.不会是在输入的时候出错吧.
      你试一下,在getpy第一句加上,return, 看看是否是输入出错,还是在函数体有错.2.也可以用char型
      

  5.   

    自己已经解决。
    用parameters子句。
    那就当散分吧。