ورود

View Full Version : مشکل با select بعد از insert در SP



RezaNrzdh
دوشنبه 23 تیر 1393, 03:46 صبح
سلام.
من یه SP توی اینترنت دیدم برای عضویت.
اومدم پیاده سازیش کنم. اما به یه مشکل عجیب خوردم.

داستان SP اینجوریه که username و password و email رو میگیره ، اول چک میکنه ببینه usernameی قبلا وجود داشته ؟ اگه آره -1 رو برمیگردونه
بعد چک میکنه email قبلا وجود داشته یا نه اگه آره -2 رو برمیگردونه.
حالا اگه هیچکدوم از این دوتا وجود نداشتن ، اطلاعات رو وارد دیتابیس میکنه بعدشم 3 رو برمیگردونه.

حالا جالبیه کار اینجاست ، چرا در قسمت آخر بعد از insert ، عدد 3 بر گشت داده نمیشه؟؟؟ اگه insert رو برداریم... select آخری خوب کار میکنه...اما وقتی insert باشه انگار عملا کار نمیکنه و به جای عدد 3 دوباره -1 برگشت میخوره به برنامه
واقعا عجیبه!!
نظر شما چیه؟؟؟؟

CREATE PROCEDURE [dbo].[Insert_User]
@Username NVARCHAR(20),
@Password NVARCHAR(20),
@Email NVARCHAR(30)
AS

BEGIN

SET NOCOUNT ON;
IF EXISTS(SELECT UserId FROM Users WHERE Username = @Username)
BEGIN
SELECT -1 -- Username exists.
END
ELSE IF EXISTS(SELECT UserId FROM Users WHERE Email = @Email)
BEGIN
SELECT -2 -- Email exists.
END
ELSE
BEGIN
INSERT INTO [Users]
([Username]
,[Password]
,[Email]
,[CreatedDate])
VALUES
(@Username
,@Password
,@Email
,GETDATE())

SELECT 3

END
END

nimaazadi93
دوشنبه 23 تیر 1393, 09:06 صبح
سلام
فیلد UserId که در select بالا هست در Insert نیست اگر در جدول Allow Nulls ؛ تیک خورده باشد مشکل ندارد اگر تیک نخورده باشد هنگام exec به خطا می خورد و فکر میکنم که -1 برمیگرداند

RezaNrzdh
دوشنبه 23 تیر 1393, 13:41 عصر
دوست عزیز...کوئری ها هیچ مشکلی ندارن UserID فیلد اصلی هست و یکتا...insert به درستی انجام میشه اطلاعات در جدول ثبت میشن اما select بعد از insert اتفاق نمیفته و به جاش -1 برگشت میخورده....حالا اگه insert رو بردارم و فقط select رو بذارم همه چیز اوکی هست و عدد 3 برگشت میخوره...

RezaNrzdh
دوشنبه 23 تیر 1393, 16:27 عصر
مشکلم حل شد...