• Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
SQL Server'da Procedure'e GETDATE() Yollamak

 
#1

SQL Server tarafında çalışma yaparken bazen oluşturmuş olduğunuz Stored Procedure’lere parametre olarak GETDATE() yollamak isteyebiliriz. Kısaca bir örnek verecek olursak kullanıcıların kaydedildiği bir tablo var normalde bu işlemleri bir programlama dili yardımıyla zaten hallediyordunuz ama işiniz SQL Server’a düştü.
Senaryoya göre ekleme işleminiz şöyle gerçekleşebilir:
Kod:
EXEC InsertNewUser 'Ali', '123456', GETDATE();

Ancak burada bir hata alacaksınız. Bu hatanın içeriğinde nvarchar ve date ile ilgili bir metin yer alacaktır.
Bu hata’yı çözmenin basit bir yolu var. Tarih bilgisini saklayacak alanı nullable olarak tanımlayarak basit bir kontrolle bu işlemi halledebiliriz. Örneğin önceden oluşturduğumuz PROCEDURE şu haldeydi:
Kod:
CREATE PROC InsertNewUser
    @UserName nvarchar(30),
    @UserPassword nvarchar(30),
    @RegDate date
AS
   INSERT INTO Users(UserName, UserPassword, RegDate)
   VALUES (@UserName, @UserPassword, @RegDate)

Burada aslında bir hata yok PROCEDURE ilgili değeri aldığı sürece doğru çalışıyor. Ama direkt olarak bugünün tarihini almasını istediğimiz durumlarda parametre almıyor. O zaman oluşturduğumuz PROC üzerinde bir değişiklik yaparak başlangıçta nullable bir date değişkeni oluşturup durumunu kontrol edebiliriz. PROCEDURE düzenlenir ve şöyle bir işlem gerçekleştirilir:
Kod:
ALTER PROC InsertNewUser
    @UserName nvarchar(30),
    @UserPassword nvarchar(30),
    @RegDate date = NULL
AS

IF @RegDate IS NULL
   SET @RegDate = GETDATE()

   INSERT INTO Users(UserName, UserPassword, RegDate)
   VALUES (@UserName, @UserPassword, @RegDate)

Artık bu sayede SQL Server tarafında NULL değer almış olsa dahi bugünün tarihini ekleyecektir. Eğer sizin için bu tip durumlar hayati önem taşıyorsa bu yapıyı kullanabilirsiniz. Basit olarak NULL yazmak, formatlı tarih yollamaktan daha kolay geliyor da olabilir. Unutmadan artık SP şöyle çalışacaktır:
Kod:
EXEC InsertNewUser 'Ali', 'GÖREN', NULL

Bu çalışmanın SQL Fiddle üzerindeki örneğine şuradan ulaşabilirsiniz:
http://sqlfiddle.com/#!6/921f6/1



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Microsoft SQL Server ‘ı Manual Olarak Kaldırma comrate 0 1,258 25-10-2017, Saat: 22:52
Son Yorum: comrate
  SQL SERVER String or binary data would be truncated Hatası sempatik141 0 1,379 11-06-2017, Saat: 23:26
Son Yorum: sempatik141

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2020 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2020 Tüm hakları saklıdır.