欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle游標怎么長度 oracle游標大小

oracle游標在實際的應(yīng)用中要如何使用

您正在看的ORACLE教程是:如何在Oracle中使用游標來實現(xiàn)多重循環(huán)。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比吉水網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式吉水網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋吉水地區(qū)。費用合理售后完善,10年實體公司更值得信賴。

這篇文章,是最近在寫一個項目中所用的存儲過程,由于是第一次接觸oracle,其間花費了許多功夫,才把功能實現(xiàn)!特記錄下來,以供參考!

create or replace package PSH_GPRSSTREAMSTAT is

-- Author : ADMINISTRATOR

-- Created : 2004-12-8 10:56:01

-- Purpose : GPRS流量統(tǒng)計狀態(tài)

-- 統(tǒng)計GPRS流量

type

C_Cur is ref cursor;

function Calcu_GPRSSTREAM return number;

end PSH_GPRSSTREAMSTAT;

create or replace package body PSH_GPRSSTREAMSTAT is

function Calcu_GPRSSTREAM return number

is

c_IPPackHeadLen constant number := 40; -- 定義IP包頭長度

CURSOR c_SPINFO is

select distinct spid from sh_spinfo where isactive = '0';

c_MDTINFO C_Cur ;

v_MDTINFO number;

v_UpTransContentLens number(20,0); -- 存放當(dāng)前GPRS終端上傳轉(zhuǎn)發(fā)的信息內(nèi)容長度

v_UpContentLens number(20,0);

v_UpTotalLens number(20,0); -- 累計GPRS終端上傳的信息內(nèi)容長度

v_DownContentLens number(20,0);

v_DownTotalLens number(20,0);

newID number(20,0);

begin

-- 初始化

select max(statid) into newID from sh_gprsstreamstat;

if (newID is null) then

newID := 1;

end if;

for v_SPINFO In c_SPINFO loop -- 首先獲取SPID

-- 其次遍歷出與當(dāng)前SPID對應(yīng)的所有MDT

open c_MDTINFo for select distinct mdtid from sh_mdtinfo where (isactive = '0') and (spid = v_SPINFO.spid);

loop

fetch c_MDTINFO into v_MDTINFO;

exit when c_MDTINFO%notfound;

v_UpContentLens := 0;

v_UpTransContentLens := 0;

v_UpTotalLens := 0;

v_DownContentLens := 0;

v_DownTotalLens := 0;

-- 下面兩個select語句是用來獲得GPRS終端上傳的信息流量

select sum(length(content) + c_IPPackHeadLen) into v_UpContentLens from sh_gprsmdtupinfo where (MDTID = v_MDTINFO) and (spid = v_SPINFO.spid) ;

select sum(length(content) + c_IPPackHeadLen) into v_UpTransContentLens from sh_gprsmdttransinfo where (issuccess = '1') and (MDTID = v_MDTINFO) and (spid = v_SPINFO.spid) ;

if (v_UpContentLens is null) then

v_UpContentLens := 0;

end if;

if (v_UpTransContentLens is null) then

v_UpTransContentLens := 0;

end if;

v_UpTotalLens := v_UpTotalLens + v_UpContentLens + v_UpTransContentLens;

-- 下面的Select語句是用來獲得服務(wù)商下發(fā)的信息流量

select sum(length(content) + c_IPPackHeadLen) into v_DownContentLens from sh_gprsspdowninfo where (MDTID = v_MDTINFO) and (spid = v_SPINFO.spid) ;

if (v_DownContentLens is null) then

v_DownContentLens := 0;

end if;

v_DownTotalLens := v_DownTotalLens + v_DownContentLens ;

-- 將統(tǒng)計出的累計值存放到流量狀態(tài)統(tǒng)計表中

if (v_UpTotalLens 0) or (v_DownTotalLens 0) then

insert into sh_gprsstreamstat (statid,spid,mdtid,starttime,endtime,mdtupstream,spdownstream)

values(newID,v_SPINFO.spid,v_MDTINFO,sysdate,sysdate,v_UpTotalLens,v_DownTotalLens);

-- 自增量加1

newID := newID + 1;

end if;

end loop;

close c_MDTINFO;

commit;

end loop;

return 1;

end;

begin

null;

end PSH_GPRSSTREAMSTAT;

Oracle中的存儲過程,怎么獲取到游標的長度

無法直接獲得.

必須把游標fetch

循環(huán)一遍,才知道有多少行.

oracle中游標的使用?

這樣的問法好籠統(tǒng),不過,還是把我整理的給你看看吧~個人整理,無復(fù)制的哦~

A:分類:

1:隱式游標:非用戶明確聲明而產(chǎn)生的游標. 你根本看不到cursor這個關(guān)鍵字.

2:顯示游標:用戶明確通過cursor關(guān)鍵字來聲明的游標.

3:引用游標:

B:什么是隱式游標:

1:什么時候產(chǎn)生:

會在執(zhí)行任何合法的SQL語句中產(chǎn)生.他不一定存放數(shù)據(jù).也有可能存放記錄集所影響的行數(shù).

如果執(zhí)行SELECT語句,這個時候游標會存放數(shù)據(jù).如果執(zhí)行INSERT、UPDATE、 DELETE會存放記錄影響的行數(shù).

C:隱式游標叫什么名字:

名字叫sql

關(guān)于sql的游標變量到底有哪些呢?

作用:返回最近一次執(zhí)行SQL語句所涉及的游標相關(guān)信息.因為每執(zhí)行一次SQL語句,都會產(chǎn)生一個隱式游標.那么當(dāng)前執(zhí)行的SQL語句就是當(dāng)前的隱式游標.

sql%found

sql%notfound

sql%rowcount

sql%isopen

D:關(guān)于隱式游標的例子:

create table 學(xué)生基本信息表

(

StuID number(2),

StuName varchar2(20)

)

alter table 學(xué)生基本信息表 add constraint PK_STUID primary key(StuID)

declare

num number:=0;

begin

num:=num;

delete from 學(xué)生基本信息表 where StuID=num;

if sql%notfound then

dbms_output.put_line('該行數(shù)據(jù)沒有發(fā)現(xiàn)');

else

dbms_output.put_line('數(shù)據(jù)被發(fā)現(xiàn)并刪除,影響的行數(shù)為:'||sql%rowcount);

end if;

end;

E:關(guān)于顯示游標的例子:

1:如何定義顯示游標

declare cursor cursor_name is [select語句];

declare cursor mycur is select empno,ename,job from scott.emp;

2:如何打開游標:

open cursor_name;

open mycur;

3:如何通過游標來讀取數(shù)據(jù)

fetch cursor_name into variable_list

4:如何關(guān)閉游標:

close cursor_name;

close mycur;

注意:在Oracle中,不需要顯示銷毀游標.因為在Oracle中,很多東西是由JAVA寫的.Oracle會自動銷毀游標.

5:舉例:

declare

cursor mycur is select empno,ename,job from emp; --創(chuàng)建游標

vempno emp.empno%type;

vename emp.ename%type;

vjob emp.job%type;

begin

open mycur;--打開游標

fetch mycur into vempno,vename,vjob;--使用數(shù)據(jù)

dbms_output.put_line('I Found You!'||mycur%rowcount||'行');

dbms_output.put_line('讀取的數(shù)據(jù)為'||vempno||' '||vename||' '||vjob);

close mycur;

end;

因為只讀出來一條,所以要遍歷一下:

declare

cursor mycur is select empno,ename,job from emp;

vempno emp.empno%type;

vename emp.ename%type;

vjob emp.job%type;

begin

open mycur;

loop—循環(huán),遍歷

fetch mycur into vempno,vename,vjob;

exit when mycur%notfound;

if mycur%found then

dbms_output.put_line('讀取的數(shù)據(jù)為'||vempno||' '||vename||' '||vjob);

end if;

end loop;

dbms_output.put_line('I Found You!'||mycur%rowcount||'行');

close mycur;

end;

6:通常情況下我們在讀取表數(shù)據(jù)的時候,我們需要動態(tài)的去查詢.所以能不能在Oracle中給游標帶參數(shù)呢?可以!

1):如何定義帶參數(shù)的游標:

declare cursor cursor_name(參數(shù)名稱 參數(shù)類型描述) is select xxxxx from bbbbb where aaa==??? and ccc=???;

2):例子:

游標是一個集合,讀取數(shù)據(jù)有兩種方式

第一種方式: open fetch close

第二種方式: for 一但使用了for循環(huán) ,在循環(huán)剛剛開始的時候,相當(dāng)于執(zhí)行open,在處理循環(huán)的時候,相當(dāng)于執(zhí)行fetch,在退出循環(huán)的時候,相當(dāng)于執(zhí)行了close

Declare cursor query(vname varchar) is select empno,ename,job from emp where ename like'%'||vname||'%';

三種游標的例子:

--

DECLARE

CURSOR TEST_CUR IS

SELECT * FROM EMP;

MY_CUR EMP%ROWTYPE;

BEGIN

OPEN TEST_CUR;

FETCH TEST_CUR INTO MY_CUR;

WHILE TEST_CUR%FOUND

LOOP

DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);

FETCH TEST_CUR INTO MY_CUR;

END LOOP;

CLOSE TEST_CUR;

END;

--

DECLARE

CURSOR TEST_CUR IS

SELECT * FROM EMP;

BEGIN

FOR MY_CUR IN TEST_CUR

LOOP

DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);

END LOOP;

END;

--

DECLARE

CURSOR TEST_CUR(V_SAL NUMBER) IS

SELECT *

FROM EMP

WHERE SAL V_SAL;

V_SAL1 NUMBER ;

BEGIN

V_SAL1 := 2000;

FOR MY_CUR IN TEST_CUR(V_SAL1)

LOOP

DBMS_OUTPUT.PUT_LINE(MY_CUR.EMPNO||','||MY_CUR.ENAME);

END LOOP;

END;

如何取得oracle游標總長度?

一般用游標,不用關(guān)心長度,系統(tǒng)自動辦你判斷是否有值。你可以在網(wǎng)上搜一些用法例子。

oracle數(shù)據(jù)庫中怎么設(shè)置數(shù)據(jù)長度

1、通過圖形界面操作,在左側(cè)依次選擇objects-tables,右鍵單擊要修改的表名,選中‘Edit’-column,可以直接修改;

2、使用DDL語句:alter table 表名 modify 字段名(字符類型(長度))

例如:

alter table emp modify ename(varchar2(32))

oracle游標怎么使用?創(chuàng)建完了 怎么用?

在定義參數(shù)游標之后,當(dāng)使用不同參數(shù)值多次打開游標時,可以產(chǎn)生不同的結(jié)果集,語法如下:

cursor

cursor_name(parameter_name

datatype)

is

select_statement;

定義參數(shù)游標時,游標參數(shù)只能指定數(shù)據(jù)類型,而不能指定長度。

示例如下:

declare

cursor

temp_cursor(no

number)

is

select

name

from

cip_temps

where

id=no;

v_name

cip_temps.name%type;

begin

open

temp_cursor(1);

loop

當(dāng)前題目:oracle游標怎么長度 oracle游標大小
分享網(wǎng)址:http://chinadenli.net/article0/hijgio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)網(wǎng)站改版網(wǎng)站建設(shè)微信小程序關(guān)鍵詞優(yōu)化網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化