create or replace function P_AssessPresonCount (cAgentCode varchar2)
return number Authid current_user is
pragma autonomous_transaction;
ReSult number;
v_cursor NUMBER;--游标ID
sqlstring varchar2(8000);
v_powers number;
v_count INT;
tAgentCode varchar2(8000);
begin
if cAgentCode is null then
return 0;
elsif substr(cAgentCode,-1,1)=',' then
tAgentCode := substr(cAgentCode,2,length(cAgentCode)-2);
else
tAgentCode := substr(cAgentCode,2);
end if;
sqlstring:='select count(distinct agentcode) from laagent where branchtype=''1'' and agentcode in ('||tAgentCode||')';
v_cursor := dbms_sql.open_cursor;--打开游标;
dbms_sql.parse(v_cursor ,sqlstring ,dbms_sql.native);--解析动态SQL语句;
--绑定输入参数,v_price的值传给 :p
--dbms_sql.bind_variable(v_cursor ,':p',v_price);
--定义列,v_powers对应SELECT 语句中的第1列
dbms_sql.define_column(v_cursor,1,v_powers);
--执行动态SQL语句
v_count := dbms_sql.EXECUTE(v_cursor);
LOOP
--从游标中把数据检索到缓存区(BUFFER)中,缓冲区 的值只能被函数COLUMN_VALUE()所读取
EXIT WHEN dbms_sql.fetch_rows(v_cursor)<=0;
--函数column_value()把缓冲区的列的值读入相应变量中。
--第1列的值被读入v_phone_name中
dbms_sql.column_value(v_cursor,1,v_powers);
END LOOP;
dbms_sql.close_cursor(v_cursor);--关闭游标
ReSult:=v_powers;
return ReSult;--返回统计的数量
end P_AssessPresonCount;
/
Oracle-统计数量的Function
最新推荐文章于 2022-07-25 17:44:31 发布