En iyi yanıtlayıcılar
insert update delete olduğunda kontrol

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
- Düzenleyen mustafa3434 10 Ocak 2015 Cumartesi 19:18
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 ENDBu işine yarayabilir.
- Yanıt Olarak İşaretleyen mustafa3434 10 Ocak 2015 Cumartesi 20:56
-
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
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 ENDBu işine yarayabilir.
- Yanıt Olarak İşaretleyen mustafa3434 10 Ocak 2015 Cumartesi 20:56
-
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
-