真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle游標(biāo)怎么寫,oracle 游標(biāo)使用

oracle中如何定義一個游標(biāo)?

1.游標(biāo)定義:\x0d\x0acursor XXXA is\x0d\x0a SELECT 語句;\x0d\x0aXXXB cursorName%rowtype;\x0d\x0a\x0d\x0aXXXA: 游標(biāo)名\x0d\x0aXXXB: 游標(biāo)行數(shù)據(jù)定義\x0d\x0a\x0d\x0a2. 打開游標(biāo):\x0d\x0a-- 打開之前最好先關(guān)一下,防止上次發(fā)生異常沒有關(guān)掉而引發(fā)不必要的異常\x0d\x0a IF XXXA%ISOPEN THEN\x0d\x0a CLOSE XXXA;\x0d\x0a END IF;\x0d\x0a\x0d\x0aOpen XXXA ;\x0d\x0a Loop\x0d\x0a Fetch XXXA into XXXB;\x0d\x0a exit when XXXA%NOTFOUND;\x0d\x0a... ... 處理邏輯\x0d\x0a end loop;\x0d\x0a close XXXA;

目前成都創(chuàng)新互聯(lián)公司已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、姚安網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

Oracle存儲過程游標(biāo)for循環(huán)怎么寫

舉例回答:

案例:

--For?循環(huán)游標(biāo)

--(1)定義游標(biāo)

--(2)定義游標(biāo)變量

--(3)使用for循環(huán)來使用這個游標(biāo)

declare

--類型定義

cursor?c_job

is

select?empno,ename,job,sal

from?emp

where?job='MANAGER';

--定義一個游標(biāo)變量v_cinfo?c_emp%ROWTYPE?,該類型為游標(biāo)c_emp中的一行數(shù)據(jù)類型

c_row?c_job%rowtype;

begin

for?c_row?in?c_job?loop

dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);

end?loop;

end;

如何使用Oracle的游標(biāo)?

Oracle中的游標(biāo)分為顯示游標(biāo)和隱式游標(biāo)。

顯示游標(biāo):

顯示游標(biāo)是用cursor...is命令定義的游標(biāo),它可以對查詢語句(select)返回的多條記錄進(jìn)行處理;顯示游標(biāo)的操作:打開游標(biāo)、操作游標(biāo)、關(guān)閉游標(biāo);

隱式游標(biāo):

隱式游標(biāo)是在執(zhí)行插入(insert)、刪除(delete)、修改(update)和返回單條記錄的查詢(select)語句時由PL/SQL自動定義的。PL/SQL隱式地打開SQL游標(biāo),并在它內(nèi)部處理SQL語句,然后關(guān)閉它。

Oracle下如何用sql創(chuàng)建游標(biāo)

For 循環(huán)游標(biāo)

(1)定義游標(biāo)

(2)定義游標(biāo)變量

(3)使用for循環(huán)來使用這個游標(biāo)

declare

--類型定義

cursor?c_job

is

select?empno,ename,job,sal

from?emp

where?job='MANAGER';

--定義一個游標(biāo)變量v_cinfo?c_emp%ROWTYPE?,該類型為游標(biāo)c_emp中的一行數(shù)據(jù)類型

c_row?c_job%rowtype;

begin

for?c_row?in?c_job?loop

dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);

end?loop;

end;

Fetch游標(biāo)

使用的時候必須要明確的打開和關(guān)閉

declare?

--類型定義

cursor?c_job

is

select?empno,ename,job,sal

from?emp

where?job='MANAGER';

--定義一個游標(biāo)變量

c_row?c_job%rowtype;

begin

open?c_job;

loop

--提取一行數(shù)據(jù)到c_row

fetch?c_job?into?c_row;

--判讀是否提取到值,沒取到值就退出

--取到值c_job%notfound?是false?

--取不到值c_job%notfound?是true

exit?when?c_job%notfound;

dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);

end?loop;

--關(guān)閉游標(biāo)

close?c_job;

end;

oracle數(shù)據(jù)庫的游標(biāo)和存儲過程怎么寫?

--創(chuàng)建存儲

CREATE

OR

REPLACE

PROCEDURE

xxxxxxxxxxx_p

(

--參數(shù)IN表示輸入?yún)?shù)

OUT表示輸入?yún)?shù)

類型

使用任意Oracle

類型

is_ym

IN

CHAR

)

AS

--定義變量

vs_msg

VARCHAR2(4000);

--錯誤信息變量

vs_ym_beg

CHAR(6);

--起始月份

vs_ym_end

CHAR(6);

--終止月份

vs_ym_sn_beg

CHAR(6);

--同期起始月份

vs_ym_sn_end

CHAR(6);

--同期終止月份

--定義游標(biāo)(簡單

遍歷

結(jié)

集)

CURSOR

cur_1

IS

SELECT

area_code,CMCODE,SUM(rmb_amt)/10000

rmb_amt_sn,SUM(usd_amt)/10000

usd_amt_sn

FROM

BGD_AREA_CM_M_BASE_T

WHERE

ym

=

vs_ym_sn_beg

AND

ym

=

vs_ym_sn_end

GROUP

BY

area_code,CMCODE;BEGIN

--用輸入?yún)?shù)給變量賦初值

Oralce

SUBSTR

TO_CHAR

ADD_MONTHS

TO_DATE

函數(shù)

vs_ym_beg

:=

SUBSTR(is_ym,1,6);

vs_ym_end

:=

SUBSTR(is_ym,7,6);

vs_ym_sn_beg

:=

TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_beg,'yyyymm'),

-12),'yyyymm');

vs_ym_sn_end

:=

TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_end,'yyyymm'),

-12),'yyyymm');

--先刪除表

特定條件

數(shù)據(jù)

DELETE

FROM

xxxxxxxxxxx_T

WHERE

ym

=

is_ym;

--

用內(nèi)置

DBMS_OUTPUT

put_line

打印

影響

記錄行數(shù)

系統(tǒng)變量SQL%rowcount

DBMS_OUTPUT.put_line('del

月記錄='||SQL%rowcount||'條');

INSERT

INTO

xxxxxxxxxxx_T(area_code,ym,CMCODE,rmb_amt,usd_amt)

SELECT

area_code,is_ym,CMCODE,SUM(rmb_amt)/10000,SUM(usd_amt)/10000

FROM

BGD_AREA_CM_M_BASE_T

WHERE

ym

=

vs_ym_beg

AND

ym

=

vs_ym_end

GROUP

BY

area_code,CMCODE;

DBMS_OUTPUT.put_line('ins

月記錄='||SQL%rowcount||'條');

--遍歷游標(biāo)處理

更新

遍歷游標(biāo)

幾種

用for語句

比較直觀

FOR

rec

IN

cur_1

LOOP

UPDATE

xxxxxxxxxxx_T

SET

rmb_amt_sn

=

rec.rmb_amt_sn,usd_amt_sn

=

rec.usd_amt_sn

WHERE

area_code

=

rec.area_code

AND

CMCODE

=

rec.CMCODE

AND

ym

=

is_ym;

END

LOOP;

COMMIT;

--錯誤處理部

OTHERS表示除

聲明外

任意錯誤

SQLERRM

系統(tǒng)內(nèi)置變量保存

前錯誤

詳細(xì)信息

EXCEPTION

WHEN

OTHERS

THEN

vs_msg

:=

'ERROR

IN

xxxxxxxxxxx_p('||is_ym||'):'||SUBSTR(SQLERRM,1,500);

ROLLBACK;

--

前錯誤記錄進(jìn)

志表

INSERT

INTO

LOG_INFO(proc_name,error_info,op_date)

VALUES('xxxxxxxxxxx_p',vs_msg,SYSDATE);

COMMIT;

RETURN;

END;


文章標(biāo)題:oracle游標(biāo)怎么寫,oracle 游標(biāo)使用
網(wǎng)頁路徑:http://weahome.cn/article/dscgoio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部