8 Şubat 2009 Pazar

CURSOR


DECLARE @sehir varchar(11), @sehir_id varchar(20)

DECLARE cr CURSOR FOR
SELECT il_id,adi FROM Iller

OPEN cr

FETCH NEXT FROM cr INTO @sehir_id , @sehir

WHILE @@FETCH_STATUS = 0
BEGIN

UPDATE adresler set il=@sehir_id where il=@sehir

FETCH NEXT FROM cr INTO @sehir_id , @sehir

END


CLOSE cr
DEALLOCATE cr

GO



16 Ocak 2009 Cuma

T-SQL: Get only Date from DateTime

Sadece tarih bilgisidir.... Saat, dakika, saniye hep 0

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
2009-01-16 00:00:00.000





23 Kasım 2008 Pazar

SQL SERVER - Tek insert into ile birden fazla kayıt girebilmek - UNION ALL kullanımı

Ref:http://blog.sqlauthority.com/2007/06/08/sql-server-insert-multiple-records-using-one-insert-statement-use-of-union-all/

UNION
UNION ilişkili tabloların aynı tipte verileri olması kaydıyla DISTINCT ile getirmesidir. JOIN lemesi gibi.

UNION ALL
UNION ALL, UNION komutuna eşittir bir farkla, o da tüm değerleri seçmesi.

Union all çiftlenmiş kayıtlarıda getirir. Tüm kayıtlarını getirir ve tablolarını birleştirir.

A UNION komutu SELECT DISTINCT sonucunu getirir. Eğer tüm satırların eşsiz olarak ayrıştığını biliyorsanız UNION ALL kullanın, çünkü daha hızlıdır.

Örneğin:
Table 1 : First,Second,Third,Fourth,Fifth
Table 2 : First,Second,Fifth,Sixth

Result Set:
UNION: First,Second,Third,Fourth,Fifth,Sixth (This will remove duplicate values)
UNION ALL: First,First,Second,Second,Third,Fourth,Fifth,Fifth,Sixth,Sixth (This will repeat values)


USE YourDB
GO
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('First',1);
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('Second',2);
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('Third',3);
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('Fourth',4);
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('Fifth',5);
GO


yerine

USE YourDB
GO
INSERT INTO MyTable  (FirstColSecondCol)
    
SELECT  'First' ,1
    
UNION ALL
SELECT  'Second' ,2
    
UNION ALL
SELECT  'Third' ,3
    
UNION ALL
SELECT  'Fourth' ,4
    
UNION ALL
SELECT  'Fifth' ,5
GO


sonuç:
INSERT : 5 saniye
INSERT SELECT UNION ALL : 40 milisaniye

SELECT INTO

Ref:reference

USE YourDB
GO
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('First',1);
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('Second',2);
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('Third',3);
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('Fourth',4);
INSERT INTO MyTable  (FirstColSecondCol)
        
VALUES ('Fifth',5);
GO

INSERT INTO SELECT

Ref: http://blog.sqlauthority.com/2007/06/08/sql-server-insert-multiple-records-using-one-insert-statement-use-of-union-all/

USE AdventureWorks
GO
    
----Create TestTable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
    
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (FirstNameLastName)
    
SELECT FirstNameLastName
    
FROM Person.Contact
    
WHERE EmailPromotion 2
    
----Verify that Data in TestTable
SELECT FirstNameLastName
    
FROM TestTable
    
----Clean Up Database
DROP TABLE TestTable
GO

30 Ekim 2008 Perşembe

Cannot resolve the collation conflict between “SQL_Latin1_General_CP1254_CI_AS” and “Turkish_CS_AI” in the equal to operation


ALTER DATABASE kanTahlilleri_new COLLATE SQL_Latin1_General_CP1254_CI_AS

Kaynak: http://www.ahmetkaymaz.com/2006/12/29/sql-serverde-language-ve-collation-kavrami/

select ilce.Ilce_text+‘/’+Il.Il_text
from Il_kodlarI Il
left join Ilce_kodu ilce on ilce.Il_kodu = Il.Il_kodu
collate Turkish_CS_AI

23 Ekim 2008 Perşembe

MSSQL 2005 Hata Yakalama TRY CATCH

BEGIN TRY

select 1/0

END TRY
BEGIN CATCH

-- Hatayı görüntüleyelim
SELECT
ERROR_NUMBER() AS HATANUMARASI
,ERROR_MESSAGE() AS HATAMESAJ
,ERROR_SEVERITY() AS ONEM
,ERROR_STATE() AS DURUM

-- Hatayı tabloya yazalım
INSERT INTO Errors
SELECT ERROR_NUMBER()
,ERROR_MESSAGE()
,ERROR_STATE()
,ERROR_SEVERITY()

END CATCH


ERROR_NUMBER() : Oluşan hatanın kodunu verir
ERROR_MESSAGE() : Oluşan hatanın tam metnini verir. Bu hata mesajı hatanın parametreleri, açıklaması, zamanlaması gibi bilgileri içerir.
ERROR_SEVERITY() : Hatanın önem derecesini bildirir
ERROR_STATE() : Hatanın durum numarasını döndürür.
ERROR_LINE() : Hatanın oluştuğu satırı bildirir.
ERROR_PROCEDURE() : Hatanın oluştuğu stored procedure’un veya trigger’ın adını döndürür