Pirmais veids:
declare @x intOtrajā veidā kursors ir kā mainīgais:
declare cur cursor for
Select 2 Union Select 3
open cur
fetch next from cur into @x
while @@fetch_status = 0
begin
print @x
fetch next from cur into @x
end
close cur;
Deallocate cur;
declare @x intKam tas otrais veids vajadzīgs? Piemēram, lai padotu kursoru kā parametru procedūrai (MSDN).
declare @cur cursor
Set @cur = Cursor for
Select 2 Union Select 3
open @cur
fetch next from @cur into @x
while @@fetch_status = 0
begin
print @x
fetch next from @cur into @x
end
close @cur;
Deallocate @cur;
Procedūra [2012-07-05 mainīts piemērs]:
Create Proc dbo.myProcIzskatās tas, piemēram, tā:
(
@someValue int,
@cur Cursor Varying Output
)
As
Begin
declare @x int;
Set @cur = Cursor for
Select i From dbo.MyTable
Where i < @someValue;
open @cur
End
create Table dbo.MyTable
(
i int
);
Insert Into dbo.MyTable (i) values (1)
Insert Into dbo.MyTable (i) values (2)
Insert Into dbo.MyTable (i) values (3)
Insert Into dbo.MyTable (i) values (4)
Go
Set NoCount ON;
Go
Create Proc dbo.myProc
(
@someValue int,
@cur Cursor Varying Output
)
As
Begin
declare @x int;
Set @cur = Cursor for
Select i From dbo.MyTable
Where i < @someValue;
open @cur
End
Go
-- Use of proc
declare @cur cursor;
declare @x int;
Exec dbo.myProc 3, @cur output
fetch next from @cur into @x
while @@fetch_status = 0
begin
print 'value: ' + cast(@x as varchar)
fetch next from @cur into @x
end
close @cur;
Deallocate @cur;
Go
--Cleanup
Drop Proc dbo.myProc
Drop Table dbo.MyTable
Nu ta beidzot!!!!
AtbildētDzēst