create or replace function GetFrequence(MinValues  in number, MaxValues in number,Tablename in Varchar2,FieldName  in Varchar2) return long is
  Result long;
  str varchar2(50);
begin
  str='select count(*) into '|| Result || 'from '|| Tablename || 'where '|| FieldName||'>='''||MinValues||''' and '||FieldName||' <'''MaxValues||'';
  execute   immediate    str;
  return(Result);
end GetFrequence;小弟我初次接触oracle,所以一些基础的东西还不会,望指导:
此函数功能: 查询所给表内特定条件记录的例数, 
参数:MaxValues: 条件的最大值
     Minvalues: 条件的最小值
     Tablename: 所查询的表
     FieldName: 所查询的表的字段名我写的这个是不正确的,哪位大侠能帮我写一个正确的函数?多谢谢

解决方案 »

  1.   

    str='select count(*) into '|| Result || 'from '|| Tablename || 'where '|| FieldName||'>='''||MinValues||''' and '||FieldName||' <'''MaxValues||'';
      execute   immediate    str;改为:
    str='select ' || Result ||':=count(*) from '|| Tablename || 'where '|| FieldName||'>='''||MinValues||''' and '||FieldName||' <'''MaxValues||'';
      execute   immediate    str;
      

  2.   

    create or replace function GetFrequence(
    MinValues  in number, MaxValues in number,Tablename in Varchar2,FieldName  in Varchar2)
     return number is
      Result number;
      str varchar2(50);
    begin
      str='select count(0) into Result from '|| Tablename || 'where '|| FieldName||'>='''||MinValues||''' and '||FieldName||' <'''MaxValues||'';
      execute   immediate    str;
      return(Result);
    end GetFrequence;Thanks
    Hima
      

  3.   

    把str设置长点,50可能不够用create or replace function GetFrequence(
    MinValues  in number, MaxValues in number,Tablename in Varchar2,FieldName  in Varchar2)
     return number is
      Result number;
      str varchar2(300);
    begin
      str='select count(0) into Result from '|| Tablename || 'where '|| FieldName||'>='''||MinValues||''' and '||FieldName||' <'''MaxValues||'';
      execute   immediate    str;
      return(Result);
    end GetFrequence;
      

  4.   

    没必要用execute吧?写个范例给你参考一下:)
    create or replace function aaa(vempno in varchar2)
    return varchar2 
    is
      cc varchar2(20);
    begin
      select empno 
      into   cc
      from emp where empno = vempno;  return cc;end aaa;
    /select aaa('7900') from dual;
      

  5.   

    into result应该写在execute语句中:str:='select count(*) from '|| Tablename || ' where '|| FieldName||'>='''|| MinValues ||''' and '||FieldName||' <'''||MaxValues||'''';
    execute   immediate  str into result;
      

  6.   

    create or replace function GetFrequence(
    MinValues  in number, MaxValues in number,Tablename in Varchar2,FieldName  in Varchar2)
     return number is
      Result number;
      str varchar2(500);
    begin
      str:='select count(0) from '|| Tablename ||' where '|| FieldName||'>='||MinValues||' and '|| FieldName||'< '||MaxValues;
      execute immediate str into Result;
      return(Result);
    end GetFrequence;