+1 امتیاز

اشکال این کد کجاست

@NameCustomer nvarchar(50)
,@mobile varchar(8)
as
if (@NameCustomer is not null)
begin	
SELECT     CustomerInfo.id_Customer, CustomerInfo.CustomerName, CustomerInfo.Addredd, CustomerInfo.Mobile, CustomerInfo.Tel, CustomerInfo.CodeEconomic, 
                      CustomerInfo.Credit, GroupCustomer.GropuName
FROM         CustomerInfo INNER JOIN
                      GroupCustomer ON CustomerInfo.IDGroupCustomer = GroupCustomer.IDGroupCustomer
where CustomerInfo.CustomerName = @NameCustomer
return end

if (@mobile Is Not Null)
 begin
		SELECT     CustomerInfo.id_Customer, CustomerInfo.CustomerName, CustomerInfo.Addredd, CustomerInfo.Mobile, CustomerInfo.Tel, CustomerInfo.CodeEconomic, 
							  CustomerInfo.Credit, GroupCustomer.GropuName
		FROM         CustomerInfo INNER JOIN
							  GroupCustomer ON CustomerInfo.IDGroupCustomer = GroupCustomer.IDGroupCustomer
		where CustomerInfo.Mobile  =@mobile
 return end


 

سلام.

کد شما چه خطایی داره؟

میخواید پروسیجر ایجاد کنید؟ یا Query بنویسید و اجرا کنید؟
ویرایش شده توسط
توسط (2,595 امتیاز) 5 15 90
منطق این کد این هستش که

اگه کاربر خواست با نام مشتری جستجو انجام بده براش جستجو انجام بشه و اگه خواست با شماره موبایل جستجو انجام بده بازم اگه رکوردی باشه براش به نمایش در بیاره

هر دو فیلد جستجو در یک جدول هستن
توسط (741 امتیاز) 1 14 52

2 پاسخ

0 امتیاز
@NameCustomer nvarchar(50)
,@mobile varchar(8)

دو پارامتر هستند که از سمت سی شارپ برای SQL مقدار میفرستند

شما در شرط if گفتید که اگه Namecustomer یا Mobile   نال بود شرطت امال بشه...

خب حالا فرض کنیم سی شارب نام Ali رو برای SQL فرستاد... حالا آیا چون پارامتری با مقدار علی برای SQL ارسال شده آیا واقعا IS Not NULL هستش؟ و NULL بودن اون رو در کجا بسنجه؟

اگر این دو پارامتر ستونهایی از جدول شما هستن داخل پرانتز If باید اون ستون چک بشه که آیا  NULL هست یا نه

If Exists ( Select  *  from TableName where ColumnName=@NameCustomer  )
Begin
.
.
.
END

OR

If NOT Exists ( Select  *  from TableName where ColumnName Like '%@NameCustomer%' )

 

 

ببخشید موقع تایپ متوجه نشدم قسمت هایی از کد پاک شدن...

اصلاح کردم
توسط (466 امتیاز) 7 26

از کاربر میخوام به دلخواه یکی از مقادیر رو برای جستجو وارد کنه

 در شرط SQL هم دارم چک میکنم که کاربر کدوم مقدار رو وارد کرده که براساس مقدار وارد شده جستجو رو انجام بده

اولویت هم با نام مشتری هست که باید اول جستجو بشه که اگه وارد نشده باشه بره سراغ شماره موبایل

declare @mobile varchar(50)='147'
if (@mobile Is Not Null)
 begin
  Set @mobile  = 'IS Not Null'
 end
Else 
begin
Set @mobile = 'IS Null'
end
print @mobile

با این مثال میتونید راحتر متوجه منظور من بشید

توسط (741 امتیاز) 1 14 52
+1 امتیاز

سلام.

به صورت پروسیجر.

CREATE PROC ProcedureName
@NameCustomer nvarchar(50),
@mobile varchar(8)
AS
IF @NameCustomer IS NOT NULL
begin
SELECT   C.id_Customer 
        ,C.CustomerName 
        ,C.Addredd
        ,C.Mobile 
        ,C.Tel
        ,C.CodeEconomic
        ,C.Credit
        ,G.GropuName
FROM    CustomerInfo AS  C 
             INNER JOIN
        GroupCustomer AS G 
              ON C.IDGroupCustomer = G.IDGroupCustomer AND C.CustomerName = @NameCustomer
end
ELSE IF @mobile IS NOT NULL
begin
SELECT  C.id_Customer
        ,C.CustomerName 
        ,C.Addredd
        ,C.Mobile 
        ,C.Tel
        ,C.CodeEconomic 
        ,C.Credit 
        ,G.GropuName
FROM    CustomerInfo AS  C 
             INNER JOIN
        GroupCustomer AS G 
              ON C.IDGroupCustomer = G.IDGroupCustomer AND C.Mobile = @mobile
end

این کد مخاطب رو بر اساس نام و یا شماره همراه جست جو میکنه.

C نام مستعار برای جدول  CustomerInfo و G نام مستعار برای جدول  GroupCustomer.

C#
C#

زبان برنامه نویسی

توسط (741 امتیاز) 1 14 52

به جای

if  @name is not null
و
if @mobile is not null

از

IF  @name <> ''
و
IF  @mobile <> ''

استفاده کنید.

ویرایش شده توسط
توسط (2,595 امتیاز) 5 15 90
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,927 کاربر

دسته بندی ها

...