begin
declare @a int,@error int
declare @temp varchar(50)
declare @corp_code varchar(200)
declare @corp_name varchar(200)
declare @short_name varchar(200)
set @a=1
set @error=0
begin tran --申明事務
--申明游標為od_id
declare order_cursor cursor
for (select [od_id] from [lzmisframe].[dbo].[sf_org_department]
where od_id like '%od%' and od_id !='od191226101101')
--開啟游標--
open order_cursor
--開始迴圈游標變數--
fetch next from order_cursor into @temp
while @@fetch_status = 0 --返回被 fetch語句執行的最後游標的狀態--
begin
if not exists (select pk_corp from [zjk].[dbo].[zj_outside_corp] where pk_corp=@temp)
begin
insert into [zjk].[dbo].[zj_outside_corp] ([pk_corp]
,[corp_code]
,[corp_name]
,[short_name])
select [od_id],[od_code],[od_name],[od_shortname]
from [lzmisframe].[dbo].[sf_org_department]
where od_id =@temp
endelse
begin
select @corp_code=[od_code],@corp_name=[od_name],@short_name=[od_shortname]
from [lzmisframe].[dbo].[sf_org_department]
where od_id =@temp
update [zjk].[dbo].[zj_outside_corp] set corp_code=@corp_code,corp_name=@corp_name,short_name=@short_name
where pk_corp =@temp
endset @a=@a+1
set @error= @error + @@error --記錄每次執行sql後是否正確,0正確
fetch next from order_cursor into @temp --轉到下乙個游標
end
if @error=0
begin
commit tran --提交事務
endelse
begin
rollback tran --回滾事務
endclose order_cursor --關閉游標
deallocate order_cursor --釋放游標
endgo
使用游標 游標FOR迴圈
游標for迴圈是在pl sql塊中使用游標最簡單的方式,它簡化了對游標的處理。當使用游標for迴圈時,oracle會隱含的開啟游標,提取游標資料並關閉游標。例子 顯示emp表所有雇員名及其工資 declare cursor emp cursor isselect ename,sal from emp...
游標,動態,for迴圈
小測 輸出各部門員工的部門名稱和工號 姓名,工資。要求 各部門工資最高的放在前面 在 dallas 地方的部門名稱後加上 三種實現方式 1 通過顯式游標 2 通過for迴圈 3 通過動態sql方式 顯示游標 declare type emp dept is record name dept.dnam...
sql 迴圈,游標
declare userid varchar 50 declare my cursor cursor 定義游標 for select userid from dbo.memberaccount 查出需要的集合放到游標中 open my cursor 開啟游標 fetch next from my c...