oracle pipelined返回值函式 針對資料彙總統計 返回結果集方法
/*開啟日誌輸出*/ Set serveroutput on ; /*建立型別*/ create or replace type type_flux_data_stat_o as object ( ifinoctetsbps number , ifoutoctetsbps number , collecttime number ); /*建立型別歸屬為表型別*/ create or replace type type_flux_data_stat as table of type_flux_data_stat_o; /*pipelined建立函式 返回表型別*/ create or replace FUNCTION f_linkgroupstat(begin_time IN NUMBER, end_time IN NUMBER, lg_id in varchar2, table_name varchar2 ) return type_flux_data_stat pipelined as /*遊標申明*/ v_Cur SYS_REFCURSOR ; /*sql臨時變數*/ v_SQLStatement string (10000 ); /*表型別*/ v_Table type_flux_data_stat_o; /*流入位元組數臨時變數*/ tmp_ifinoctetsbps NUMBER ; /*流出位元組數臨時變數*/ tmp_ifoutoctetsbps NUMBER ; /*流入位元組數彙總*/ total_ifinoctetsbps NUMBER ; /*流出位元組數彙總*/ total_ifoutoctetsbps NUMBER ; /*起始時間窗格*/ tmp_begin_time NUMBER ; /*結束時間窗格*/ tmp_end_time NUMBER ; begin /*時間窗格偏移量為5分鐘(300秒)*/ tmp_begin_time := begin_time; tmp_end_time := begin_time + 300 ; total_ifinoctetsbps := 0 ; total_ifoutoctetsbps := 0 ; loop exit when tmp_begin_time > end_time; v_SQLStatement := 'select sum(ifinoctetsbps) ifinoctetsbps,sum(ifoutoctetsbps) ifoutoctetsbps from ' || table_name || ' a where exists (select 1 from tm_linkgroup_cportdirection b where a.getway = b.getway and a.port_info=b.ifindex_info and lg_id in (' || lg_id || ') and a.device_id = b.device_id ) and a.collecttime >=' || tmp_begin_time || ' and a.collecttime <=' || tmp_end_time || ' order by collecttime' ; Dbms_Output.put_line(v_SQLStatement); /*針對字串sql開啟遊標*/ open v_Cur for v_SQLStatement; tmp_begin_time := tmp_begin_time + 300 ; tmp_end_time := tmp_end_time + 300 ; total_ifinoctetsbps := 0 ; total_ifoutoctetsbps := 0 ; loop /*將遊標的值放入零食變數中*/ fetch v_Cur into tmp_ifinoctetsbps, tmp_ifoutoctetsbps; /*當遊標中不存在值時跳出遊標*/ EXIT WHEN v_Cur% NOTFOUND; total_ifinoctetsbps := total_ifinoctetsbps + tmp_ifinoctetsbps; total_ifoutoctetsbps := total_ifoutoctetsbps + tmp_ifoutoctetsbps; end loop ; /*單行記錄初始化*/ v_Table := type_flux_data_stat_o(total_ifinoctetsbps, total_ifoutoctetsbps, tmp_begin_time); /*將記錄壓入至結果集中*/ pipe row (v_Table); /*關閉遊標*/ close v_Cur; end loop ; Exception when others then Dbms_Output.put_line( Sqlerrm ); end f_linkgroupstat;
相關推薦
oracle pipelined返回值函式 針對資料彙總統計 返回結果集方法
/*開啟日誌輸出*/ Set serveroutput on ; /*建立型別*/ create or replace type type_flux_data_stat_o as object ( ifinoctetsbps number , ifoutoctetsbps number
檔案內指標的移動,函式的基本使用,函式的返回值,函式引數的使用
強調:只有t模式下read(n),n代表字元個數,除此以外都是以位元組為單位with open('a.txt',mode='rt',encoding='utf-8') as f: res=f.read(4) print(res)with open('a.txt',mode='rb') as f:
JQuery應用例項學習 —— 28 處理json返回值,點擊出現後臺返回資料
27.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">
【Swift4】(5) 函式基本使用 | 可變引數 | inout引用傳遞 | 函式型別返回值 | 函式巢狀
函式基本使用 關鍵字:func func hello(name:String) ->String { let result = "Hello,"+name return res
只要函式的返回值,遮蔽echo var_dump等輸出結果。php ob 解決
有時候,會訪問一個函式,這個函式有輸出,如果呼叫這個函式就會輸出,譬如: public function ee(){ echo 333; return 444; } public function run(){ echo $this->ee(); } 上面的
【C++】C++ 多返回值函式
在一些複雜的應用中,使用多返回值的函式更加方便。從使用一個結構體到採用c++ 11新特性tuple類模板,在c++中有多種方式實現這一需要。 通過返回一個物件來實現多返回值函式,這個方案比較直觀,但在很多情況下有些小題大做了。首先,你必須去宣告一個結構體。結構體常常要對使
Oracle 11g使用Pivot函式實現資料聚合行轉列
經常使用資料庫,我們有很大的精力應付在處理各種各樣的資料型別,處理各種型別的報表。需要對資料進行行列轉換,Oracle 11G 提供了pivot函式,方便我們對資料進行行列轉換。 表設計如下: create table tongji( id number primary
返回值為基本資料型別返回null報空指標異常
顯然,null並不能作為基本資料型別的值,int a = null;這句程式碼編譯都過不了,如果返回值為null的話就會嘗試將null強轉為基本資料型別,此時就會報空指標異常。但是對於其包裝型別就不存在這個問題了,給包裝型別返回null是合理的,因為Integer a = n
已定義的函式有返回值,函式呼叫可以作為一個函式的實參,但是不能作為形參
1、問題描述 若已定義的函式有返回值,則以下關於該函式呼叫的敘述中錯誤的是( D ) A)函式呼叫可以作為獨立的語句存在 B)函式呼叫可以作為一個函式的實參 C)函式呼叫可以出現在表示式中
java多執行緒 demo ,包含帶返回值的Callable和不帶返回值的Runnable
輸入int,利用callable取得double值,再用runnable列印 import java.util.concurrent.*; public class TestMultiThread { private static ExecutorService pool = nul
ORACLE 查詢多行轉單行資料,並且用逗號分隔展示方法
oracle 10g或以上 一個wm_concat函式就可以解決。 如果是oracle 9i以下就有點麻煩了。 表結構如下: NAME Null Type ----------------------
Oracle Union Union All Intersect Minus 4種對查詢結果集操作
Oracle Union Union All 對查詢結果集操作 在Oracle中提供了三種類型的集合操作: 並(UNION)、交(INTERSECT)、差(MINUS) Union:對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序; Union All:對兩個結果集進行並集
ORACLE隨機從表中取一條資料作為函式返回值
需求是這樣的:有一張經緯度表,需要從中隨機取一條資料插入另一張表作為其中的兩個欄位。插入過程在儲存過程中,所以需要函式返回值為經緯度資料物件。 首先,生成返回值物件POINT_OBJECT,包括經度緯度。 --生成經緯度 CREATE OR REPLACE TYPE POINT_OBJECT AS OB
oracle中null值相關函式彙總
nvl 最常用的函式。它接收兩個引數。返回第一個非空值。若兩個引數都為空,返回null。 例: select nvl(null, 9695) from dual; --9695 select nvl(123, null) from dual; --123 selec
oracle的dense_rank函式,實現分組後組內排序,取最值一組資料
1.按VESSEL_CD, SYEAR, SMonth進行分組,組內資料按SENDDATE排序。 select VESSEL_CD, SYEAR, SMonth, to_char(SENDDATE, 'yyyy-mm-dd hh24
Oracle decode()函式返回值問題
今天碰到一個問題,說min函式返回錯誤的取值。詳細如下:一個數據表列型別為number(6,2),其中有三行記錄,分別為0,0.6和1。用min獲取最小值,得到0.6。 min是Oracle SQL的一個基礎函式,理論上不會出現這樣的Bug之類的。下面一起來模擬下實驗環
oracle接收函式返回值的三種形式
先建立一個函式吧,如下: Sql程式碼 createorreplacefunction get_user return varchar2 is v_user varchar2(100);
Oracle 利用管道函式(pipelined)實現高效能大資料處理
引言 在plsql開發中,會涉及到一些大資料量表的資料處理,如將某記錄數超億的表的記錄經過處理轉換插入到另外一張或幾張表。 常規的操作方法固然可以實現,但時間、磁碟IO、redo日誌等等都非常大。Oracle 提供了一種高階函式,可以將這種資料處理的效能提升
Ajax函式內呼叫非同步方法獲資料,無法及時獲取到賦值給返回值 || 不使用快取結果
js預設是非同步的,比如下載3張圖片,你點選產生這個指令,但圖片下載完可能是2秒之後,“下載完成”的提示訊息也是在之後傳送給你,相當於多執行緒 也就是你寫了個函式,在裡面請求一組資料,並嘗試返回值,可能你函式走完了,請求的資料才拿到 比如: 解決方法: 用
Oracle的pipelined函式提升資料輸出效能
從Oracle 8開始,我們就可以從一個collection型別的資料集合中查詢出資料,這個集合稱之為“虛擬表“。它的方法是“SELECT FROM TABLE(CAST(plsql_function AS collection_type))”,據說該方