Statik Prefix ve Oluşturulma Tarihi ile Veritabanındaki Tabloları Seçmek için Basit Cursor
Aşağıdaki cursor sorgusu, veritabanında çalışır ve belirli ön eklerle (‘b_’,’delete_’) tüm tabloyu bulur. Ayrıca Tablonun belirli günlerden eski olup olmadığını veya belirli günlerden önce oluşturulmuş olup olmadığını kontrol eder, siler. Bu tablo üzerinde silmek, yazdırmak veya indekslemek gibi başka herhangi bir işlemimiz olabilir.
SET NOCOUNT ON
DECLARE @lcl_name VARCHAR(100)
DECLARE cur_name CURSOR FOR
SELECT name
FROM sysobjects
WHERE type = 'U'
AND crdate <= DATEADD(m,-1,GETDATE())
AND name LIKE 'b_%'
OPEN cur_name
FETCH NEXT FROM cur_name INTO @lcl_name
WHILE @@Fetch_status = 0
BEGIN
SELECT @lcl_name = 'sp_depends' +@lcl_name
PRINT @lcl_name
-- EXEC (@lcl_name)
FETCH NEXT FROM cur_name INTO @lcl_name
END
CLOSE cur_name
DEALLOCATE cur_name
SET NOCOUNT OFF
İşte cursorlarla ilgili olarak hatırlanması gereken noktalardan birkaçı.
- Cursorlar, WHILE döngülerini kullandıkları için döngülerden başka bir şey değildir.
- Cusror’ların aşırı kullanımı, çok fazla kaynak kullanabileceklerinden sorgu performansını olumsuz etkileyebilir.
- Bir seferde bir satır eklemek için imleç yerine küme teorisini, SELECT…INSERT veya INSERT INTO…SELECT gibi işlemleri kullanmak daha iyidir.