如果是 1,2,3和1,2,3,4,5分別以整體的數(shù)據(jù)加到 table2中
創(chuàng)新互聯(lián)公司憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個(gè)人等客戶提供了網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。
declare
v_a table1.a%type;
v_str varchar2(2000);
begin
select a into v_a from table1;
for v_aa in 1..v_a loop
if(length(str)=0)then
str:=v_aa;
else
str:=str ||','|| v_aa;
end if;
end loop;
insert into table2 values(str);
end;
/
是分別循環(huán)加到table2中
declare
v_a table1.a%type;
begin
select a into v_a from table1;
for v_aa in 1..v_a loop
insert into table2 values(v_aa);
end loop;
end;
/
這種情況必須定義行類型的變量來解決:
declare
row_data tb_student%ROWTYPE
for row_data in tb_student loop
update student st set st.class_name = row_data.class_name
where st.class_id = row_data.class_id
end loop;
但這樣種循環(huán)更新效率確實(shí)很低,SQL是面向集合的運(yùn)算,像你這種需求可以用一條更新SQL外加子查詢來解決,不建議用循環(huán)來做。
一、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;
/*以上語句翻譯如下:
declare 定義變量;
begin...end語句塊
x 變量賦值
repeat_loop 設(shè)置循環(huán)點(diǎn)
循環(huán)內(nèi)容
? ? x 變量遞減
? ? 按行打印 x
IF...END IF語句塊
? ? IF...(條件) THEN :滿足IF條件? 則
? ? GOTO語句 前往循環(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語句塊
for...loop...end loop; 語句
*/
三、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 語句塊
while...loop...end loop; 語句
*/
四、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語句
? ? exit when ...(條件) ;
*/
寫循環(huán)的操作方法和步驟如下:
1、第一步,編寫存儲(chǔ)過程的整體結(jié)構(gòu),然后定義變量,見下圖。
2、其次,完成上述步驟后,在定義變量后定義游標(biāo),begin,select sysdate into v_date from dual,end test_proc,如下圖所示。
3、接著,完成上述步驟后,寫一個(gè)for循環(huán),游標(biāo)開始for循環(huán),為臨時(shí)變量名任意起個(gè)名,輸出一個(gè)字段,使用變量名.列名就好了,最后游標(biāo)for循環(huán)就結(jié)束了,如下圖所示。
4、最后,完成上述步驟后,試運(yùn)行,單擊“
DBMS Output”選項(xiàng)卡進(jìn)行檢查,運(yùn)行成功,見下圖。這樣,問題就解決了。
set serveroutput on;
declare
sum3 number :=0;
begin
for i in (select sal from emp where empno between 7000 and 8000) loop
sum3:=sum3+i.sal;
--dbms_output.put_line(i.sal);
end loop;
dbms_output.put_line('員工編號(hào)范圍是7000到8000工資的和是'||sum3);
end;
/
--廣科
procedure copy(a_id int) is
cursor t_cursor is
select * from table f where f.id = a_id;
v_row table%rowtype;
begin
for v_row in t_cursor loop
-- 處理數(shù)據(jù)
end loop;
end copy;