以下是自己嘗試撰寫的Cursor範例程式,我想依據條件將每一筆結果放在@tempTable中,或只是印出一行字,最後select出來,請問要怎麼改寫這邊的程式碼呢?
create table [dbo].[tableA](
FieldName1 nvarchar(4000) not null,
FieldName2 nvarchar(4000) not null,
FieldName3 nvarchar(4000) not null,
FieldName4 nvarchar(4000) not null,
FieldName5 bit not null,
FieldName6 bit not null
)
set nocount on
--定義存放的變數
declare @no nvarchar(4000)
--@tempTable放結果
--模擬實際table的欄位長相
declare @tempTable table (
FieldName1 nvarchar(4000)
, FieldName2 nvarchar(4000)
, FieldName3 nvarchar(4000)
, FieldName4 nvarchar(4000)
, FieldName5 bit
, FieldName6 nvarchar(4000) bit)
--定義Cursor,並打開
declare myCursor cursor for
--資料集
select * from TableA
--開啟游標
open myCursor
--查看總筆數
print @@cursor_rows
--迴圈跑Cursor
fetch next from myCursor into
@FieldName1,
@FieldName2,
@FieldName3,
@FieldName4,
@FieldName5,
@FieldName6
while(@@fetch_status <> -1)
begin
if @FieldName5 = 0
begin
--這邊想要把找出來的資料丟到暫存Table
end
else
begin
print 'insert...'
end
--抓下一筆
fetch next from myCursor into
@FieldName1,
@FieldName2,
@FieldName3,
@FieldName4,
@FieldName5,
@FieldName6
end
--關閉與釋放Cursor
close myCursor
deallocate myCursor
create table [dbo].[tableA](
FieldName1 nvarchar(4000) not null,
FieldName2 nvarchar(4000) not null,
FieldName3 nvarchar(4000) not null,
FieldName4 nvarchar(4000) not null,
FieldName5 bit not null,
FieldName6 bit not null
)
insert into tableA (FieldName1,FieldName2,FieldName3,FieldName4,FieldName5,FieldName6)values ('test','test','test','test',0,1);
insert into tableA (FieldName1,FieldName2,FieldName3,FieldName4,FieldName5,FieldName6) values ('test','test','test','test',1,1);
set nocount on
--定義存放的變數
declare @no nvarchar(4000)
--@tempTable放結果
--模擬實際table的欄位長相
declare @tempTable table (
FieldName1 nvarchar(4000)
, FieldName2 nvarchar(4000)
, FieldName3 nvarchar(4000)
, FieldName4 nvarchar(4000)
, FieldName5 bit
, FieldName6 bit)
--定義Cursor,並打開
declare myCursor cursor for
--資料集
select * from TableA
--開啟游標
open myCursor
--查看總筆數
print @@cursor_rows
--迴圈跑Cursor
declare @FieldName1 nvarchar(4000)
, @FieldName2 nvarchar(4000)
, @FieldName3 nvarchar(4000)
, @FieldName4 nvarchar(4000)
, @FieldName5 bit
, @FieldName6 bit;
fetch next from myCursor into
@FieldName1,
@FieldName2,
@FieldName3,
@FieldName4,
@FieldName5,
@FieldName6
while(@@fetch_status <> -1)
begin
if @FieldName5 = 0
begin
--這邊想要把找出來的資料丟到暫存Table
insert into @tempTable (FieldName1,FieldName2,FieldName3
,FieldName4,FieldName5,FieldName6)
values (@FieldName1,@FieldName2,@FieldName3
,@FieldName4,@FieldName5,@FieldName6);
end
else
begin
print 'insert...'
end
--抓下一筆
fetch next from myCursor into
@FieldName1,
@FieldName2,
@FieldName3,
@FieldName4,
@FieldName5,
@FieldName6
end
--關閉與釋放Cursor
close myCursor
deallocate myCursor
--最後查詢暫存表
select * from @tempTable;