Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

StoredProcedure IS NULL olgusu....

[CODE]ALTER PROCEDURE [Anka].[SPRutbeJenerasyonIliskisiSelect]
@ID decimal(18,0) = NULL,
@RutbeID decimal(18,0) = NULL,
@Kademe int= NULL,
@KomisyonOrani decimal(10,0)= NULL
AS
BEGIN
SET ANSI_NULLS On;
SET NOCOUNT ON;
SELECT * FROM RutbeJenerasyonIliskisi
WHERE
((@ID IS NULL) OR (ID = @ID)) OR
((@RutbeID IS NULL) OR (RutbeID = @RutbeID)) OR
((@Kademe IS NULL) OR (Kademe = @Kademe)) OR
((@KomisyonOrani IS NULL) OR (KomisyonOrani=@KomisyonOrani))

END
[/CODE]

Execute diyorum
@ID = 4
@RutbeID = 1

verip diğerlerini Null geçiyorum.

Bu koşullara uyan yani ID değeri 1 veya RutbeID değeri 4 olan koşula uyan 2 kayıt; tablomda toplam 3 Kayıt var.

Bakıyorum bakıyorum hatayı veren alanı bulamıyorum...

Bana yardımcı olabilirmisiniz? Teşekkürler.
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • mehmeta adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    5 cevap - 0 soru
    Şunu deneyin:
    SELECT * FROM RutbeJenerasyonIliskisi 
    WHERE 
     ID = ISNULL(@ID, ID) OR 
     RutbeID = ISNULL(@RutbeID, RutbeID) OR 
     Kademe = ISNULL(@Kademe, Kademe) OR 
     KomisyonOrani = ISNULL(@KomisyonOrani, KomisyonOrani)
    
    • oguzmusa adlı üyenin fotoğrafı oguzmusa
      Herkes farklı bir cevap veriyor. Uyguluyorum o anda doğru oluyor, çalışıyor oluyor, sonra gene bir yerde patlıyor. Yok mu bunun bir sabit olayı?
      9 yıl önce yazılmış
    • mehmeta adlı üyenin fotoğrafı mehmeta
      İçerisine mantıklı kayıtlar atın ve tablonun kendisini gönderin. Almak istediğiniz sonucu da anlatırsanız farklı çözümler üretebiliriz, 'is null' kullanmak gerekmeyebilir.
      9 yıl önce yazılmış
    • oguzmusa adlı üyenin fotoğrafı oguzmusa
      ID RutbeID Kademe KomisyonOrani
      8 2 1 10
      9 3 1 15
      10 4 1 20


      Bu tablo üstündeki her alanı sorgulayabileceğim bir yapı.
      yani ID değeri bu olan yada Rutbesi Bu olan yada Kademe değeri bu olan yada Komisyon değeri bul olan kayıtları getir.

      Ama ben şunuda yapabilmeliyim.

      Tüm değerleri girebileceğim gibi tek bir ID değeri yada ID ve Rütbe değeri girebilmeliyim...

      bu durumda girmediğim diğer değerleri sorgu sırasında hesaba katmasın....

      0 değer girersem doğal olarak 0 değeri hesaba katacak ve koşulsuz getirecek...

      Açık olabildimmi?
      9 yıl önce yazılmış
    • mehmeta adlı üyenin fotoğrafı mehmeta
      GÜnaydın,
      Çok fazla OR hep kafamı karıştırmıştır :)
      Test edebileceğiniz kodları da ekliyorum, şu an istediğinizi karşılıyor:
      DECLARE @table TABLE (
      	ID INT,
      	RutbeID INT,
      	Kademe INT,
      	KomisyonOrani INT
      ) 
      INSERT @table SELECT 8,	2, 1, 10 
      INSERT @table SELECT 9,	3, 1, 15 
      INSERT @table SELECT 10,4, 1, 20 
      
      DECLARE @ID INT 
      DECLARE @RutbeID INT 
      DECLARE @Kademe INT 
      DECLARE @KomisyonOrani INT 
      
      SET @ID = NULL
      SET @RutbeID = NULL
      SET @Kademe = 1
      SET @KomisyonOrani = NULL
      
      SELECT * FROM @table 
      WHERE 
      	ID = ISNULL(@ID, ID) AND 
      	RutbeID = ISNULL(@RutbeID, RutbeID) AND
      	Kademe = ISNULL(@Kademe, Kademe) AND
      	KomisyonOrani = ISNULL(@KomisyonOrani, KomisyonOrani)
      
      9 yıl önce yazılmış
    • oguzmusa adlı üyenin fotoğrafı oguzmusa
      ALTER PROCEDURE [Anka].[SPRutbelerSelect]
      @ID decimal(18,0) = NULL,
      @RutbeKodu varchar(150)= NULL,
      @RutbeAdi varchar(150)= NULL,
      @Puan float= NULL,
      @KisiSayisi decimal(10,0)= NULL,
      @Director decimal(10,0)= NULL,
      @UstRutbeSayisi decimal(10,0)= NULL
      AS
      BEGIN

      SET NOCOUNT ON;

      SELECT * FROM Rutbeler
      WHERE
      (ID = ISNULL(@ID, ID)) OR
      (RutbeKodu = ISNULL(@RutbeKodu, RutbeKodu)) OR
      (RutbeAdi = ISNULL(@RutbeAdi, RutbeAdi)) OR
      (Puan = ISNULL(@Puan, Puan)) OR
      (KisiSayisi = ISNULL(@KisiSayisi, KisiSayisi)) OR
      (Director = ISNULL(@Director, Director)) OR
      (UstRutbeSayisi = ISNULL(@UstRutbeSayisi, UstRutbeSayisi))
      END


      Çalışmıyor dostum...
      ID 5;
      RutbeKodu 3E olan (iki farklı kayıt) kayıtları getir dediğimde getirmiyor...
      9 yıl önce yazılmış
    • mehmeta adlı üyenin fotoğrafı mehmeta
      Hocam tekrar selam,
      sizin tablo da, bizim fikirlerimiz gibi ilerledikce değişiyor :) Son gönderdiğinize göre son derece dinamik olacak şekilde bir örnek daha gönderiyorum. @SqlWhere değişkenine sadece hangi koşulları istiyorsanız onları örnekteki gibi yazınız.
      DECLARE @SqlWhere AS NVARCHAR(500)
      SET @SqlWhere = 'ID = 5 OR RutbeKodu = ''3E'''
      
      DECLARE @SQLQuery AS NVARCHAR(500)
      SET @SQLQuery = N'
      	DECLARE @Rutbeler TABLE (
      		ID INT,
      		RutbeKodu VARCHAR(2),
      		Kademe INT,
      		KomisyonOrani INT
      	) 
      	INSERT @Rutbeler SELECT 8, ''2'', 1, 10 
      	INSERT @Rutbeler SELECT 9, ''3'', 1, 15 
      	INSERT @Rutbeler SELECT 10, ''4'', 1, 20 
      	INSERT @Rutbeler SELECT 5, ''4'', 1, 20 
      	INSERT @Rutbeler SELECT 11, ''3E'', 1, 20
      	 
      	SELECT * FROM @Rutbeler 
              WHERE 1 = 1 AND ' + @SqlWhere
      	
      PRINT @SQLQuery
      EXECUTE(@SQLQuery)
      

      Bu cevabın "doğru" olarak işaretleneceğini umuyorum :)
      9 yıl önce yazılmış