create or replace function GET_COUNT_ZS
(deptcode  in varchar2, tablename in varchar2,bs in varchar2)
return  varchar2
is 
num varchar2(1000);
c number;
begin
if(bs=0) then 
num:='select count(*) from '||tablename||' where  deptcode like '''||deptcode||'%''';
end if;
if(bs=1) then
num:='select count(*) from '||tablename||' where  deptcode like '''||deptcode||'%'''||' and  SFDTGL=1' ;
end if;
execute immediate num into   c;
return c;
end;

  

第二个 :

create or replace function GET_COU_SYQK
(deptcode  in varchar2, SYZT in varchar2)
return  varchar2
is
num varchar2(1000);
c number;
begin
num:='select count(*) from t_fwcq where  deptcode like '''||deptcode||'%'' and sszthz = '''||SYZT||'''';
execute immediate num into   c;
return c;
end;

调用的sql 语句 :

 var stb = new StringBuilder();
            stb.Append("select ");
            stb.Append("GET_COUNT_ZS('" + deptcode + "','t_fwzc',0) as countzc ");
            stb.Append(",GET_COUNT_ZS('" + deptcode + "','t_fwcq',0) as countfw ");
            stb.Append(",GET_COUNT_ZS('" + deptcode + "','zc_dt',0) as countdt ");
            stb.Append(",GET_COUNT_ZS('" + deptcode + "','t_fwzc',1) as countygl ");
            stb.Append(",GET_COU_SYQK('" + deptcode + "','自用') as countzy ");
            stb.Append(",GET_COU_SYQK('" + deptcode + "','闲置') as countxz ");
            stb.Append(",GET_COU_SYQK('" + deptcode + "','出租') as countcz ");
            stb.Append(",GET_COU_SYQK('" + deptcode + "','占用') as countzhany ");
            stb.Append(",GET_COU_SYQK('" + deptcode + "','出售') as countcs ");
            stb.Append(",GET_COU_SYQK('" + deptcode + "','盘亏') as countpk ");
            stb.Append(",GET_COU_SYQK('" + deptcode + "','封存') as countfc ");
            stb.Append(",GET_COU_SYQK('" + deptcode + "','其他') as countyqt ");
            stb.Append("from dual ");