oracle 儲存過程經典例項
阿新 • • 發佈:2019-01-25
/**
--將相同分類下的知識分配到不同的分類下面
-- whwu2
*/
create or replace procedure test_pro --定義儲存過程名
is
row_num number := 1; --變數的宣告與賦初始值
total_num varchar2(1000); --變數的宣告
tmp_kbcCode varchar2(1000);
CURSOR myCusor IS --遊標的定義
select tt.kbccode from knowledgebase_category tt;
begin
WHILE row_num <= 3 LOOP
dbms_output.put_line('執行while迴圈'); ---列印一些除錯資訊
row_num := row_num +1;
END LOOP;
--------------方法的執行體------------------------------
select to_number(count(1)) into total_num from knowledge; --對 total_num 進行賦值
dbms_output.put_line('Total_num' || total_num); ---列印一些除錯資訊
open myCusor; --開啟遊標
loop
fetch myCusor
into tmp_kbcCode; --迴圈遍歷遊標,並把遊標裡面的值依次賦給 tmp_kbcCode
exit when myCusor%notfound;
if (row_num + 10) < total_num then
-- if 條件
update knowledge tt
set tt.kbccode = tmp_kbcCode
where tt.kcode in (select kcode
from (select t.kcode, rownum rn from knowledge t)
where rn >= row_num
and rn <= row_num + 10);
row_num := row_num + 10;
end if;
end loop;
commit;
end test_pro;
--將相同分類下的知識分配到不同的分類下面
-- whwu2
*/
create or replace procedure test_pro --定義儲存過程名
is
row_num number := 1; --變數的宣告與賦初始值
total_num varchar2(1000); --變數的宣告
tmp_kbcCode varchar2(1000);
CURSOR myCusor IS --遊標的定義
select tt.kbccode from knowledgebase_category tt;
begin
WHILE row_num <= 3 LOOP
dbms_output.put_line('執行while迴圈'); ---列印一些除錯資訊
row_num := row_num +1;
END LOOP;
--------------方法的執行體------------------------------
select to_number(count(1)) into total_num from knowledge; --對 total_num 進行賦值
dbms_output.put_line('Total_num' || total_num); ---列印一些除錯資訊
open myCusor; --開啟遊標
loop
fetch myCusor
into tmp_kbcCode; --迴圈遍歷遊標,並把遊標裡面的值依次賦給 tmp_kbcCode
exit when myCusor%notfound;
if (row_num + 10) < total_num then
-- if 條件
update knowledge tt
set tt.kbccode = tmp_kbcCode
where tt.kcode in (select kcode
from (select t.kcode, rownum rn from knowledge t)
where rn >= row_num
and rn <= row_num + 10);
row_num := row_num + 10;
end if;
end loop;
commit;
end test_pro;