Bir SQL Hikayesi

31 Ocak 2007

Bazen MS-SQL kullandığımı unutup, MySQL’deki gibi sorgular yazıyorum. Geçen zaman diliminde geliştirdiğim bir projenin DB yapısında bazı refactoring işlemleri yaptıktan sonra; göç (migration) için gerekli olan SQL betiklerini(script) yazdım. Tabii alışkanlıktan aşağıdaki gibi bir betik hazırladım.

UPDATE
Bid b,
Product
p
SET
p.CategoryId=b.CategoryId

WHERE
b.ProductId = p.Id;

Daha sonra, yazdığım göç betiklerini test ederken gördüm ki, MSSQL bu işlemi desteklemiyor. Böyle bir işlemi yapabilmek için T-SQL yazmak gerekiyor. Sonrada aşağıda gördüğünüz kodu yazdım.

Buraya da yazayım dedim; belki birinin T-SQL’de CURSOR örneğine ihtiyacı olur yada yukarıdaki gibi MySQL’de ki gibi MSSQL’de Multiple Update işlemi yapmak ister :-)

DECLARE
cr_BidCategoryToProductCategory
CURSOR FOR

SELECT DISTINCT
p.Id, b.CategoryId
FROM
Bid b,
Product p

WHERE
b.ProductId = p.Id;

DECLARE @productId
int, @categoryId
int;

OPEN
cr_BidCategoryToProductCategory;

FETCH
cr_BidCategoryToProductCategory
INTO @productId, @categoryId

WHILE (@@FETCH_STATUS = 0)

BEGIN

UPDATE Product SET
CategoryId = @categoryId
WHERE Id = @productId;

FETCH
cr_BidCategoryToProductCategory
INTO
@productId, @categoryId

END
CLOSE

cr_BidCategoryToProductCategory;

DEALLOCATE
cr_BidCategoryToProductCategory;

Kategori



Eğer yazıyı beğendiyseniz ya da ekleyecekleriniz varsa, lütfen yorumunuz yazın veya RSS aboneliği ile yeni yazılardan anında haberdar olun.

Henüz yorum yapılmamış.

Yorum yapın