create or replace package P_Package as
 function disjoint(p1 varchar,p2 varchar) return binary_integer;
 function contain (p varchar,line varchar) return binary_integer;
 end P_Package;
 
create or replace  package body P_Package as
 function disjoint(p1 varchar,p2 varchar) 
 return binary_integer   --提示参数中缺少形式参数
 is
 LANGUAGE C NAME "disjoint" 
 library T_P
 parameters(s1 string,s2 string,return int);
 --end disjoint;
 function contain(p varchar,line varchar) 
 return binary_integer    ----提示参数中缺少形式参数
 is
 LANGUAGE C NAME "contain"
 library T_P
 parameters(s1 string,s2 string,return int);
 --end contain;
 end P_Package;
请问上面的问题该怎么解决呢?谢谢!

解决方案 »

  1.   

    end disjoint;--end contain;这两行为什么要注释掉呢?
      

  2.   

    语法错了!你换成:
       create or replace  package body P_Package as
     function disjoint(p1 varchar,p2 varchar) 
     return binary_integer   --提示参数中缺少形式参数
     is
    begin
     LANGUAGE C NAME "disjoint" 
     library T_P
     parameters(s1 string,s2 string,return int);
     end disjoint; 
     function contain(p varchar,line varchar) 
     return binary_integer    ----提示参数中缺少形式参数
     is
     begin
     LANGUAGE C NAME "contain"
     library T_P
     parameters(s1 string,s2 string,return int);
     end contain; end P_Package;  试试看!
      

  3.   

    回复一楼兄弟:取消注释后会出现这些错:Compilation errors for PACKAGE BODY SYS.P_PACKAGEError: PLS-00113: END 标识符 'DISJOINT' 必须同 'P_PACKAGE' 匹配 (在第 1 行,第 14 列)
    Line: 8
    Text: end disjoint;Error: PLS-00103: 出现符号 "FUNCTION"
    Line: 9
    Text: function contain(p varchar,line varchar)Error: PLS-00103: 出现符号 "VARCHAR"在需要下列之一时:
           .(),*@%&|=-+</>atinis
              modnotrangerem=>..<an exponent (**)><> or != or ~=>=<=<>and
              orlikebetween||
    Line: 9
    Text: function contain(p varchar,line varchar)Error: PLS-00103: 出现符号 "END"在需要下列之一时:
           beginfunctionpackagepragma
              proceduresubtypetypeuse<an identifier>
              <a double-quoted delimited-identifier>formcurrentcursor
           符号 "begin在 "END" 继续之前已插入。
    Line: 15
    Text: end contain;回复二楼兄弟,语法没有错,我曾写了个这样的测试程序是可以运行的:create or replace package s_package as
    function t_add(a varchar) RETURN binary_integer;
    end s_package;
    create or replace package body s_package as
     function t_add(a varchar) RETURN binary_integer is
    LANGUAGE C NAME "test"
    LIBRARY MYLIB
    PARAMETERS (a string,
    RETURN int );
    end s_package;我按你写的试了,还是有编译错误,该怎么解决呢?
      

  4.   

    create or replace package P_Package as
     function disjoint(s1 varchar,s2 varchar) return binary_integer;
     function contain (s1 varchar,s2 varchar) return binary_integer;
     end P_Package;
    /create or replace  package body P_Package as
     function disjoint(s1 varchar,s2 varchar)
     return binary_integer
     is
     LANGUAGE C NAME "disjoint" 
     library T_P
     parameters(s1 string,s2 string,return int); function contain(s1 varchar,s2 varchar) 
     return binary_integer    ----提示参数中缺少形式参数
     is
     LANGUAGE C NAME "contain"
     library T_P
     parameters(s1 string,s2 string,return int); end P_Package;parameters中的参数应和过程参数一致