View Full Version : پروسجر جستجو
angel farahani
سه شنبه 23 اردیبهشت 1393, 15:49 عصر
با سلام ، دوستان من یک چنین فرم جستجویی دارم که براش پروسجر زیر رو نوشتم ، اما جوابی نمیده و هیچی بر نمی گردونه ، میشه راهنماییم کنید کجاش مشکل داره ؟؟
118974
و اینم پروسجرم :
USE [OnlineResturans]GO
/****** Object: StoredProcedure [dbo].[sp_Search] Script Date: 07/10/2012 04:08:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Batch submitted through debugger: ostad.sql|0|0|C:\Users\Lenovo\Documents\SQL Server Management Studio\Projects\ostad.sql
ALTER procedure [dbo].[sp_Search]
@shopname varchar(30),
@shoptypeid int,
@wifi bit,
@freeship bit,
@parkingplace tinyint,
@economylevel tinyint,
@areanum tinyint
As
Begin
select shopid,shopname,shoptypeid,description,economyleve l,areanum,shoplogoname from shop
Where(shopname=null)or (shopname LIKE '%'+@shopname+'%')
and
(shoptypeid=null)or(shoptypeid=@shoptypeid)
and
(wifi=null)or(wifi=@wifi)
and
(freeship=null)or(freeship=@freeship)
and
(parkingplace=null)or(parkingplace=@parkingplace)
and
(economylevel=null)or(economylevel=@economylevel)
and
(areanum=null)or(areanum=@areanum)
return
End
espootin
سه شنبه 23 اردیبهشت 1393, 19:23 عصر
سلام.
مشخصه که شرطتون مشکل داره و با هیچ رکوردی تطابق نداره! این شرط را باید اصلاح کنید.
هدفتون از این شرط چیه؟ چه چیزی را می خواهید؟
angel farahani
سه شنبه 23 اردیبهشت 1393, 19:43 عصر
سلام ، میخوام فیلدهایی که مقدارش رو وارد کرده با توجه به آنها جستجو رو در نظر بگیره و بر اساس فیلدهایی که مقدارشون مشخص نشده جستجو انجام نشه . حالا چطور باید درست بشه ؟ اطلاعات رستوران ها رو میخوام خروجی بده
espootin
سه شنبه 23 اردیبهشت 1393, 21:08 عصر
به نمونه زیر توجه کنید.
-- input params
declare @param1 int = 5;
-- variables
declare @select varchar(max), @condition varchar(max), @command varchar(max);
-- set select command
set @select = 'select col1,col2,col3,.. from TableName ';
-- add conditions
if(@param1 is not null)
set @condition = 'Name like ''%علی%''';
-- merge commands
select @command = @select + ' where ' + @condition;
-- execute
exec (@command);
بدین صورت پارامتر هایی که مقدار دارند را توی شرط بگذارید و از عملگر And نیز بین آنها استفاده کنید و سپس اجرا کنید.
انشالا که به جواب مورد نظرتون می رسید.
موفق باشید./
angel farahani
پنج شنبه 25 اردیبهشت 1393, 19:12 عصر
با سپاس از شما ، من اصن با این نمونه کدی که شما گذاشتین نتونستم بنویسم :( میشه شما با توجه به پرامترهای جدول من مثالتون رو بزنید ، بخدا خیلی سر این مورد موندم :(
angel farahani
پنج شنبه 25 اردیبهشت 1393, 21:01 عصر
من این مدلی نوشتم : ولی خطای Incorrect syntax near 'َ'. رو میده ، میشه راهنمایی کنید
ALTER procedure [dbo].[sp_Search]
@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null
AS
BEGIN
select shopid,shopname,shoptypeid,description,economyleve l,areanum,shoplogoname from shop
WHERE
([shopname] LIKE IsNULL(@shopname, shopname) + '%')
AND
[shoptypeid] = IsNull(@shoptypeid, [shoptypeid])
AND
[wifi] = IsNull(@wifi,[wifi])
AND
[freeship] = IsNull(@freeship, [freeship])
َAND
[parkingplace] = IsNull(@parkingplace,[parkingplace])
AND
[economylevel] = IsNull(@economylevel,[economylevel])
AND
[areanum] = IsNull(@areanum,[areanum]);
END
angel farahani
جمعه 26 اردیبهشت 1393, 17:56 عصر
من طبق آموزش های توی نت ، اینطوری هم نوشتم اما هیچی بر نمی گردونه :( این همه مهندس اینجاست هیشکی مشکل من رو حل نمی کنه :(
USE [OnlineResturans]GO
/****** Object: StoredProcedure [dbo].[SearchShops] Script Date: 07/13/2012 06:42:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SearchShops]
@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null
AS
BEGIN
Select *
From shop
Where(@shopname IS null OR shopname Like '%'+@shopname+'%')AND
(@shoptypeid IS null OR shoptypeid=@shoptypeid)AND
(@wifi IS null OR wifi=@wifi)AND
(@freeship IS null OR freeship=@freeship)AND
(@parkingplace IS null OR parkingplace=@parkingplace)AND
(@economylevel IS null OR economylevel=@economylevel)AND
(@areanum IS null OR areanum=@areanum)
END
espootin
شنبه 27 اردیبهشت 1393, 08:32 صبح
این رو تست کنین ، باید جواب بگیرید:
ALTER PROCEDURE [dbo].[SearchShops]
@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null
AS
BEGIN
select shopid, shopname, shoptypeid, [description]
,economylevel,areanum,shoplogoname
from shop
WHERE
[shopname] = coalesce (@shopname, shopname)
AND [shoptypeid] = coalesce (@shoptypeid, shoptypeid)
AND [wifi] = coalesce (@wifi, wifi)
AND [freeship] = coalesce (@freeship, freeship)
َAND [parkingplace] = coalesce (@parkingplace, parkingplace)
AND [economylevel] = coalesce (@economylevel, economylevel)
AND [areanum] = coalesce (@areanum, areanum);
END
angel farahani
شنبه 27 اردیبهشت 1393, 23:14 عصر
سلام با تشکر از شما ، من از این کد استفاده کردم که درست هست و تو اس کیو ال خروجی گرفتم
ALTER PROCEDURE [dbo].[SearchShops]
@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null
AS
BEGIN
Select shopid,shoplogoname,shopname,shoptypeid,descriptio n,economylevel,areanum
From shop
Where(@shopname IS null OR shopname Like '%'+@shopname+'%')AND
(@shoptypeid IS null OR shoptypeid=@shoptypeid)AND
(@wifi IS null OR wifi=@wifi)AND
(@freeship IS null OR freeship=@freeship)AND
(@parkingplace IS null OR parkingplace=@parkingplace)AND
(@economylevel IS null OR economylevel=@economylevel)AND
(@areanum IS null OR areanum=@areanum)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.