tuuba yazdi | TYPE_WARNING kullanımına örnek????? |
TYPE_WARNING:
TYPE_WARNING parametresi kullanıcının cursor’un tipini değiştirmeye çalışması durumunda bir uyarı mesajı vermesini sağlar.
Ornek:
USE pubs
GO
SELECT emp_id, fname
INTO CursorTable--CursorTable adinda bir tabloya pubs.employee den
FROM employee--fname'i P ile baslayanlarin emp_id ve fnamelerini cekiyoruz
WHERE fname like 'P%'
/*Cursor tanimlanmasi Keyset olarak yapiyyoruz*/
DECLARE CursorTest CURSOR
GLOBAL
SCROLL
KEYSET
TYPE_WARNING
FOR
SELECT emp_id, fname
FROM CursorTable
DECLARE @emp_id char(9)--fetch edecegimiz ilk degisken
DECLARE @fname varchar(20)--fetch edecegimiz ikinci degisken
OPEN CursorTest--cursor aciyoruz
FETCH NEXT FROM CursorTest INTO @emp_id, @fname --degiskenleri @@fetch_status=0 oldugu surece dolduruyoruz
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @emp_id + ' ' + @fname
FETCH NEXT FROM CursorTest INTO @emp_id, @fname
END
CLOSE CursorTest
DEALLOCATE CursorTest
DROP TABLE CursorTable
SONUC:
(9 row(s) affected)
The created cursor is not of the requested type.
PCM98509F Patricia
PDI47470M Palle
PHF38899M Peter
PMA42628M Paolo
POK93028M Pirkko
PSA89086M Pedro
PSP68661F Paula
PTC11962M Philip
PXH22250M Paul
Cursor type_warning tanimlamisi yaptıgımız icin uyari gosteriyor.Bunun sebebi Unique index e sahip olmayan bir tablo uzerinde keyset olarak cursor tanımlamamiz.Burada cursor keyset durumundan implicitly olarak static cursor e convert ediliyor bundan dolayi uyari mesaji kullanıcıya gosterılıyor
Eger yarattigimiz CursorTable a bir unique index olusturursak ve daha sonra cursoru keyset olarak yaratırsak bu uyari mesajını almayız.
USE pubs
GO
SELECT emp_id, fname
INTO CursorTable--CursorTable adinda bir tabloya pubs.employee den
FROM employee--fname'i P ile baslayanlarin emp_id ve fnamelerini cekiyoruz
WHERE fname like 'P%'
Create Unique index emp_id_index on CursorTable(emp_id)
/*Cursor tanimlanmasi Keyset olarak yapiyyoruz*/
DECLARE CursorTest CURSOR
GLOBAL
SCROLL
KEYSET
TYPE_WARNING
FOR
SELECT emp_id, fname
FROM CursorTable
DECLARE @emp_id char(9)--fetch edecegimiz ilk degisken
DECLARE @fname varchar(20)--fetch edecegimiz ikinci degisken
OPEN CursorTest--cursor aciyoruz
FETCH NEXT FROM CursorTest INTO @emp_id, @fname --degiskenleri @@fetch_status=0 oldugu surece dolduruyoruz
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @emp_id + ' ' + @fname
FETCH NEXT FROM CursorTest INTO @emp_id, @fname
END
CLOSE CursorTest
DEALLOCATE CursorTest
DROP TABLE CursorTable
SONUC:
(9 row(s) affected)
PCM98509F Patricia
PDI47470M Palle
PHF38899M Peter
PMA42628M Paolo
POK93028M Pirkko
PSA89086M Pedro
PSP68661F Paula
PTC11962M Philip
PXH22250M Paul
yok
|