儲存過程迴圈
create or replace procedureprocedure_name [有引數就寫,沒引數就不寫 ]
as
cursorcursor_name -- 游標,是用儲存資料的
is
select 欄位名,
......,[
或者是
* ] from table_name [
可以加各種條件
] ;(第一張表)
parameter_name 字段型別 ;
begin
for自定義名(info)incursor_nameloop --迴圈
-- 例如,要先刪除已存在的資料,再新增,之前有出過問題(不知道是不是沒有分開的緣故),所以將插入和刪除語句放在兩個迴圈中;
select count (欄位名
/ * )intoparameter_name from table_name where 欄位名=
info.上面is後面查詢語句對應的欄位名
ps:(兩張表的名稱可以不同,型別不同的話,需要轉換); (第二張表)
--判斷資料是否存在
ifparameter_name >0then
delete from table_name where 欄位名
=info.
第一張表欄位名 ;
end if;
end loop;
commit; --一定要提交,要不會死鎖
for自定義名(info)incursor_nameloop --迴圈
insert into table_name values(info.一表欄位名
,............ );
end loop;
commit; --一定要提交,要不會死鎖
end ;
錯誤情況:
ora-02070: 資料庫
b2b2
不支援此上下文中的
to_number
原因:
是因為兩張表字段不一致,需要轉換;
eg:
goodsid
乙個是varchar2
,型別,另乙個是
number
型別,
change _parameter_type_name varchar2( n ); --引數型別
-- 當用到該引數時,轉換:
change _parameter_type_name :=info(迴圈裡的同上).要轉換的欄位名
SqlServer儲存過程中迴圈的使用
1.while迴圈 格式示例如下 declare iint set i 1 while i 30begin insert into test userid values i set i i 1end2.游標迴圈 格式示例如下 declare a1varchar 10 a2varchar 10 a3i...
oracle學習 PL SQL 儲存過程中迴圈
pl spl 提供了3中不同型別的迴圈結構 例項 索引 loop counter從1開始,到10 結束,迴圈共執行10次 for loop counter in 1 10 loop 可執行語句.endloop 索引loop counter從10開始,到1結束,迴圈共執行10次 for loop co...
SQLServer 儲存過程中各種判斷是否為空
1.判斷是否存在這樣的記錄 if not exists 和 if exists 相對應 例 使用者是否存在 if not exists if exists select 1 from user nolock where username abcd begin print 使用者存在 end else...