Oracle 統計數量的Function

2021-08-10 12:54:39 字數 1487 閱讀 1673

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 統計男女數量

在寫學校的大作業的時候,對oracle有的新的認識,雖然也碰了許多問題,在這裡我總結了一些問題和需要注意的點,所有的例子都是 於學校的作業,僅供參考!也希望大家可以在我這裡少碰壁。謝謝大家!在這個例子中主要用到select,count,decode 和 group by 而其中,decode 和 g...

mysql如何分類統計數量

比如我表test裡面有id,mc,xh三個字段 分別是自動編號,鋼材名稱 若干種 鋼材型號 大號,中號,小號 id mc xh 1鋼管 大號 2銅管 大號 3鐵管 小號 4鋁管 中號 5 鋼管 小號 我現在要分別統計出 mc 裡面的各種型號的東西有多少。意思是 我要統計鋼管,銅管,鐵管,鋁管的大,中...

mysql如何分類統計數量

比如我表test裡面有id,mc,xh三個字段 分別是自動編號,鋼材名稱 若干種 鋼材型號 大號,中號,小號 id mc xh 1鋼管 大號 2銅管 大號 3鐵管 小號 4鋁管 中號 5 鋼管 小號 我現在要分別統計出 mc 裡面的各種型號的東西有多少。意思是 我要統計鋼管,銅管,鐵管,鋁管的大,中...