存儲過程中for循環
Ⅰ oracle存儲過程循環怎麼寫
Oracle中有三種循環(For、While、Loop):
1、loop循環:
sql">createorreplaceprocerepro_test_loopis
inumber;
begin
i:=0;
loop
i:=i+1;
dbms_output.put_line(i);
ifi>5then
exit;
endif;
endloop;
endpro_test_loop;
2、while循環:
createorreplaceprocerepro_test_loopis
inumber;
begin
i:=0;
whilei<5loop
i:=i+1;
dbms_output.put_line(i);
endloop;
endpro_test_loop;
3、for循環1:
createorreplaceprocerepro_test_foris
inumber;
begin
i:=0;
foriin1..5loop
dbms_output.put_line(i);
endloop;
endpro_test_for;
4、for循環2:
createorreplaceprocerepro_test_cursoris
userRowt_user%rowtype;
cursoruserRowsis
select*fromt_user;
begin
foruserRowinuserRowsloop
dbms_output.put_line(userRow.Id||','||userRow.Name||','||userRows%rowcount);
endloop;
endpro_test_cursor;
Ⅱ oracle 存儲過程兩個for循環 怎麼寫
這種情況必須定義行類型的變數來解決:
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;
但這樣種循環更新效率確實很低,SQL是面向集合的運算,像你這種需求可以用一條更新SQL外加子查詢來解決,不建議用循環來做。
Ⅲ 存儲過程中For循環怎麼寫啊
方法和詳細的操作步驟如下:
1、第一步,編寫存儲過程的整體結構,定義變數,見下圖,轉到下面的步驟。
Ⅳ 如何在SQL SERVER 2005存儲過程中,使用循環語句
實現循環有很多種方式 看你需要 或者喜歡
有for 循環
有while 循環
有foreach 循環
等等 我用的不是 sql sever資料庫 具體的 你自己寫寫看
------------------------------------------------------------
SQL
SERVER資料庫建立存儲過程時,可以使用循環語句,下面就將為您介紹這種SQL SERVER資料庫中存儲過程使用循環語句的方法,供您參考。
CREAT PROCEDURE tester
AS
BEGIN
SET NOCOUNT ON;
DECLARE @userId varchar(50)
DECLARE @count int
SET @count =
0
SELECT @count = count(*) FROM UserService_User WHERE Account like
'%111%'
WHILE @count > 0
BEGIN
SELECT @userId = Id
FROM UserService_User WHERE Account like '%111%'
exec
UserService_RemoveUserByUserId @userId
SET @count = @count -1
END
END
說明:
1、此存儲過程在SQL SERVER 2005上測試通過,值得注意的是,循環體中,語句是使用BEGIN……END包括的,而不是網路上常說的WHILE
……END WHILE結構,其他的循環語句,如LOOP ……UNTIL……END LOOP也不能通過編譯,也許是版本的問題,但在SQL
SERVER2005中,循環體使用BEGIN……END就可以,而不能使用網路上常說的WHILE ……END WHILE結構。
2、循環體中 UserService_RemoveUserByUserId
是一個存儲過程的名稱,@userId為該存儲過程的參數,如果有多個參數,使用「,」分開就可以了,這也是存儲過程調用另一個存儲過程的一種方法。
這個是我從網上網路的 希望對你有用
Ⅳ oracle存儲過程中循環for in是如何使用的
這樣使用的:
for
xx
in
(select
語句)
這是隱式游標,這個結構中不能帶參數,或者說普通的游標,隱式或顯式的都不能帶參數,使用參數游標或引用(動態)游標。
例如:
declare
cursor cur(C_value number) is select col_A,col_B from tableA where col_C=C_value
;
begin
for xx in cur loop
--處理
end loop;
end
(5)存儲過程中for循環擴展閱讀:
注意事項
使用for循環實現
declare
cursor
cur
is
select
*
from
tablename;
aw_row
tablename%rowtype;
begin
for
raw_row
in
cur
loop
dbms_output.put_line('test');
end
loop;
end;
for語句直接幫做了游標的打開關閉,以及判斷工作,所以比較常用。
Ⅵ oracle存儲過程怎麼寫循環
寫循環的操作方法和步驟如下:
1、第一步,編寫存儲過程的整體結構,然後定義變數,見下圖。
Ⅶ oracle存儲過程for循環相減
一條語句可以解決,用不著for游標循環。
createtableM_TATTENDANCEDATA(TR_DATEchar(8),PAY_CARD_COUNTint);
insertintoM_TATTENDANCEDATAvalues(20120922,324);
insertintoM_TATTENDANCEDATAvalues(20120921,314);
insertintoM_TATTENDANCEDATAvalues(20120920,306);
insertintoM_TATTENDANCEDATAvalues(20120919,305);
insertintoM_TATTENDANCEDATAvalues(20120918,304);
selectTR_DATE日期,PAY_CARD_COUNT刷卡數,
PAY_CARD_COUNT-Lag(PAY_CARD_COUNT,1)OVER(orderbyTR_DATE)相差數,
round((PAY_CARD_COUNT-Lag(PAY_CARD_COUNT,1)OVER(orderbyTR_DATE))/
Lag(PAY_CARD_COUNT,1)OVER(orderbyTR_DATE)*100,2)相差比
fromM_TATTENDANCEDATAorderbyTR_DATE;
Ⅷ Oracle存儲過程游標for循環怎麼寫
首先編寫存儲過程的整體結構,如下:
create or replace procere test_proc is
v_date date; --變數定義
begin
select sysdate into v_date from al;
end test_proc;
Ⅸ 很簡單存儲過程,求改錯(主要是FOR循環和%ROWCOUNT有點不清楚)
sfjc_record這個返回的是(select 是否借出
from 圖書
where ISBN=p_isbn;)的行記錄,不能用來和number比較
在使用for循環的時候,如果沒有記錄就不會執行循環體裡面的內容,
LZ要求在沒有返回結果的時候輸出點什麼的話,那就不建議使用for