oracle怎么實(shí)現(xiàn)循環(huán) oracle sql循環(huán)

oracle存儲(chǔ)過(guò)程循環(huán)怎么寫(xiě)

Oracle中有三種循環(huán)(For、While、Loop):

10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有瀘溪免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1、loop循環(huán):

create?or?replace?procedure?pro_test_loop?is

i?number;

begin

i:=0;

loop

i:=i+1;

dbms_output.put_line(i);

if?i5?then

exit;

end?if;

end?loop;

end?pro_test_loop;

2、while循環(huán):

create?or?replace?procedure?pro_test_loop??is

i?number;

begin

i:=0;

while?i5?loop

i:=i+1;

dbms_output.put_line(i);

end?loop;

end?pro_test_loop;

3、for循環(huán)1:

create?or?replace?procedure?pro_test_for?is

i?number;

begin

i:=0;

for?i?in?1..5?loop

dbms_output.put_line(i);

end?loop;

end?pro_test_for;

4、for循環(huán)2:

create?or?replace?procedure?pro_test_cursor?is

userRow?t_user%rowtype;

cursor?userRows?is

select?*?from?t_user;

begin

for?userRow?in?userRows?loop

dbms_output.put_line(userRow.Id||','||userRow.Name||','||userRows%rowcount);

end?loop;

end?pro_test_cursor;

Oracle循環(huán)的幾種寫(xiě)法(GOTO 、FOR 、 WHILE 、LOOP)

一、GOTO循環(huán)用法

DECLARE

x number;

BEGIN

x := 9;

repeat_loop --循環(huán)點(diǎn)

x := x - 1;

dbms_output.put_line(x);

IF x 0 THEN

? ? GOTO repeat_loop;? --當(dāng)x的值0時(shí),就goto到repeat_loop

END IF;

END;

/*以上語(yǔ)句翻譯如下:

declare 定義變量;

begin...end語(yǔ)句塊

x 變量賦值

repeat_loop 設(shè)置循環(huán)點(diǎn)

循環(huán)內(nèi)容

? ? x 變量遞減

? ? 按行打印 x

IF...END IF語(yǔ)句塊

? ? IF...(條件) THEN :滿足IF條件? 則

? ? GOTO語(yǔ)句 前往循環(huán)點(diǎn)

*/

二、FOR循環(huán)用法

DECLARE

x number;

BEGIN

FOR i in 2..10 LOOP

? ? dbms_output.put_line(i);

END LOOP;

END;

--最簡(jiǎn)單的循環(huán)?

/*

declare 定義變量

begin...end語(yǔ)句塊

for...loop...end loop; 語(yǔ)句

*/

三、WHILE循環(huán)用法

DECLARE

x number;

BEGIN

x :=5;

WHILE x 1 LOOP

? ? x := x - 1;

? ? dbms_output.put_line('循環(huán)內(nèi)'||x);

END LOOP;

dbms_output.put_line('循環(huán)外'||x);

END;

/*

declare 定義變量

begin...end 語(yǔ)句塊

while...loop...end loop; 語(yǔ)句

*/

四、LOOP循環(huán)用法

DECLARE

x number;

BEGIN

x :=0;

LOOP

? ? ? x := x + 1;

? ? ? EXIT WHEN x 9; --這里有個(gè)";"號(hào)

? ? ? dbms_output.put_line('內(nèi)'||x);

END LOOP;

dbms_output.put_line('外'||x);

END;

/*

declare 定義變量

begin...end

x 變量賦值

loop...end loop語(yǔ)句

? ? exit when ...(條件) ;

*/

Oracle中循環(huán)語(yǔ)句的幾種用法

--1.For

FOR?循環(huán)變量?IN?[REVERSE]?下界..上界

LOOP

語(yǔ)句組

END?LOOP;

--計(jì)算5的階乘,并在屏幕上打印出來(lái)。

DECLARE

num?NUMBER(3):=5;

resu?NUMBER(3):=1;

BEGIN

for?i?in?1..num?loop

resu:=?resu?*?i;

end?loop;

dbms_output.put_line(TO_CHAR(resu));

END;

--2.WHILE循環(huán)

語(yǔ)法格式:

WHILE?條件?LOOP

語(yǔ)句組

END?LOOP;

--用WHILE循環(huán)求1~100所有整數(shù)的和?

DECLARE

summ?number?:=0;

i?number(3):=100;

BEGIN

WHILE?i0?LOOP

summ:=summ+i;

i:=i?-?1;

END?LOOP;

dbms_output.put_line(summ);

END;

Oracle中使用PL/SQL怎樣用循環(huán)插入多條數(shù)據(jù)?

使用loop循環(huán),比如:

for item in (select a,b,c from table_a where 條件) loop

insert into table_b(a,b,c) values (item.a,item.b,item.c);

end loop;

也可以使用索引表循環(huán),以上只是一個(gè)簡(jiǎn)單的例子,需要根據(jù)你的具體情況選擇循環(huán)方式。

1、采用insert into values 語(yǔ)句插入一條,寫(xiě)很多條語(yǔ)句即可多條數(shù)據(jù),這種主要針對(duì)于離散值以及一些基礎(chǔ)信息的錄入,如:insert into test(xh,mc) values('123','測(cè)試');

如果插入的數(shù)據(jù)有規(guī)律,可利用for、loop循環(huán)插入,主要用于批量生成測(cè)試數(shù)據(jù)

begin

for i in 1 .. 100 loop

insert into test(xh,mc) values(i||'','測(cè)試');

end loop;

end ;。

2、采用insert into selct from 語(yǔ)句來(lái)一次性插入一個(gè)集合,這種主要依據(jù)于要插入的數(shù)據(jù)源已經(jīng)存儲(chǔ)于數(shù)據(jù)庫(kù)對(duì)象中,或者利用dual虛表來(lái)構(gòu)造數(shù)據(jù),經(jīng)過(guò)加工后寫(xiě)入一個(gè)集合。

insert into test (xh,mx) select '123','測(cè)試' from dual;

3、采用plsql等工具、或者oracle的imp、impdp命令來(lái)導(dǎo)入,這種主要用數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)之間的大批量數(shù)據(jù)導(dǎo)入,導(dǎo)入的數(shù)據(jù)格式為plsql的pde、oracle的dmp等。dmp文件可使用

table_exists_action參數(shù)控制導(dǎo)入動(dòng)作:replace替換原表,truncate清除原表數(shù)據(jù)再導(dǎo)入,append增量導(dǎo)入數(shù)據(jù),當(dāng)然impdp數(shù)據(jù)泵的導(dǎo)入要依賴于directory路徑。

impdp 用戶名/密碼 dumpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append。

4、使用excel文件直接拷貝。這種主要用于要寫(xiě)入的數(shù)據(jù)已是excel文件或者行列分明的其它格式文件,每一列的值和表結(jié)構(gòu)相對(duì)應(yīng),可直接打開(kāi)表的行級(jí)鎖,把數(shù)據(jù)拷貝進(jìn)入。

網(wǎng)站標(biāo)題:oracle怎么實(shí)現(xiàn)循環(huán) oracle sql循環(huán)
URL地址:http://muchs.cn/article44/hjscee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)定制網(wǎng)站、企業(yè)網(wǎng)站制作靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站

廣告

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

營(yíng)銷型網(wǎng)站建設(shè)