none
insert update delete olduğunda kontrol RRS feed

  • Soru

  • merhaba insert update delete işlemlerinde

    bildiğim kadarıyla geriye 0 yada 1 döndürmesi lazım bir kere -1 diye bir şey duymuştum hangisi doğru ?

    ikincisi ne yaparsam yapim neden bana update olsada olmasada habire 1 dönüyor

    kaydı olmayan örneğin 3 desemde geriye

    1 dönüyor sanki yapmış gibi.oysa Sıfır döndürmesi lazım

     Declare @Count int = 0
     set @Count = count(*)  update Person set name = "mustafa' where personId= '2'
    	
        return @Count


    aynı şekilde

    Declare @Count int set @Count = 0 select @Count = count(*) select PersonID from Person where Person= '251' select @Count

    YADA

    set @Count = 0 select @Count = count(*) select PersonID from Person where Person= '251' if @Count > 0 begin set @Count = 1 end select @Count

    her şekilde bundada 1 dönüyor kaydı olmayan id versemde 1 geliyor yani if in hiç bir anlamı yok


    3 saat dir bu aptal sql in 1 0'ı deli etti beni manyakmıdır piskopatmıdır nedir ya.Alt tarafı bir if diycez c# da bin defa yazmıştım bu 

    basitce insert update delete bana bu aptal sql bir return vermiyormu

    kusura bakmayın sınirliyim teşekkürler

     


    10 Ocak 2015 Cumartesi 19:11

Yanıtlar


  • declare @fName varchar(50) = 'Abcd', @lName varchar(50) = 'Efgh' INSERT INTO myTbl(fName,lName) values(@fName,@lName) PRINT @@ROWCOUNT --> 0- means no rows affected/nothing inserted --> 1- means your row has been inserted successfully

    --If you need @check as a bit type please change Int to bit
    DECLARE @check Int = CASE WHEN @@ROWCOUNT = 0 THEN 1 ELSE 0 END

    Bu işine yarayabilir.

    • Yanıt Olarak İşaretleyen mustafa3434 10 Ocak 2015 Cumartesi 20:56
    10 Ocak 2015 Cumartesi 20:08
  • Kullandigin database'i ogrenmeden, "boyle olmasi lazim" mantigiyla gidersen normal. Dokumentasyonu okuyup, ornekleri inceleseydin count(*) kullanimini yanlis yaptigini gorurdun. Senin yaptiginin:

    declare @Count int;
    select @Count = count(*);
    

    dan bir farki yok ve sonuc dogal olarak hep 1. Ilki icin yapman gereken son derece basit:

    update Person set name = 'mustafa' where personId= '2';
    select @@ROWCOUNT;

    Sonuc 0 ya da pozitif bir sayi. 

    declare @Count int;
    select @Count = count(*) from Person where Person= '251';
    select @Count;
    
    -- ya da
    
    declare @Count int;
    set @Count = 0;
    select @Count = count(*) from Person where Person= '251';
    if @Count > 0
       begin
        set @Count = 1; 
       end	
    select @Count;

    Dogru yazim sekilleri. Tabii gereksiz yazimlar o baska. Mesela:

    select count(*) from Person where Person= '251';

    yeterli. Ya da illa if gerekiyorsa:

    if exists (select * from Person where Person= '251')
       select 1;
    else
       select 0;

    Ayni seyi yazmanin N yolu var:

    select 
       case 
         when exists (select * from Person where Person = '251') 
           then 1 
           else 0 
       end;

    • Yanıt Olarak İşaretleyen mustafa3434 10 Ocak 2015 Cumartesi 20:52
    10 Ocak 2015 Cumartesi 20:25

Tüm Yanıtlar


  • declare @fName varchar(50) = 'Abcd', @lName varchar(50) = 'Efgh' INSERT INTO myTbl(fName,lName) values(@fName,@lName) PRINT @@ROWCOUNT --> 0- means no rows affected/nothing inserted --> 1- means your row has been inserted successfully

    --If you need @check as a bit type please change Int to bit
    DECLARE @check Int = CASE WHEN @@ROWCOUNT = 0 THEN 1 ELSE 0 END

    Bu işine yarayabilir.

    • Yanıt Olarak İşaretleyen mustafa3434 10 Ocak 2015 Cumartesi 20:56
    10 Ocak 2015 Cumartesi 20:08
  • Kullandigin database'i ogrenmeden, "boyle olmasi lazim" mantigiyla gidersen normal. Dokumentasyonu okuyup, ornekleri inceleseydin count(*) kullanimini yanlis yaptigini gorurdun. Senin yaptiginin:

    declare @Count int;
    select @Count = count(*);
    

    dan bir farki yok ve sonuc dogal olarak hep 1. Ilki icin yapman gereken son derece basit:

    update Person set name = 'mustafa' where personId= '2';
    select @@ROWCOUNT;

    Sonuc 0 ya da pozitif bir sayi. 

    declare @Count int;
    select @Count = count(*) from Person where Person= '251';
    select @Count;
    
    -- ya da
    
    declare @Count int;
    set @Count = 0;
    select @Count = count(*) from Person where Person= '251';
    if @Count > 0
       begin
        set @Count = 1; 
       end	
    select @Count;

    Dogru yazim sekilleri. Tabii gereksiz yazimlar o baska. Mesela:

    select count(*) from Person where Person= '251';

    yeterli. Ya da illa if gerekiyorsa:

    if exists (select * from Person where Person= '251')
       select 1;
    else
       select 0;

    Ayni seyi yazmanin N yolu var:

    select 
       case 
         when exists (select * from Person where Person = '251') 
           then 1 
           else 0 
       end;

    • Yanıt Olarak İşaretleyen mustafa3434 10 Ocak 2015 Cumartesi 20:52
    10 Ocak 2015 Cumartesi 20:25
  • örnekler çok yeterli oldu hocam çok teşekkür ederim
    10 Ocak 2015 Cumartesi 20:53