PDA

View Full Version : مشکل در دستور select در Stored procedure



SiLaS-CoDeR
یک شنبه 25 آبان 1393, 15:21 عصر
با سلام
می خوام بر اساس نام خانوادگی جستجو کند که این استورد پروسیجر من هست و درست کار میکند :

CREATE PROCEDURE sp_select_tbl_test
@Lname nvarchar(30),

as

select * from tbl_test where Lname like '%'+@Lname+'%'



حالا سوال اینجاست که من میخوام بر اساس نام یا نام خانوادگی یا شماره تلفن جستجو کند ( یعنی با استفاده از یکی از این 3 )
این کد رو نوشتم ولی کار نمیکنه ممنون میشم راهنمایی کنید که ایراد کارم کجاست

CREATE PROCEDURE sp_select_tbl_test
@Name nvarchar(20),
@Lname nvarchar(30),
@Tell nvarchar(15)

as

select * from tbl_test
where
Name like '%'+@Name+'%' or Lname like '%'+@Lname+'%' or Tell like '%'+@Tell+'%'

meysamsh91
دوشنبه 26 آبان 1393, 03:08 صبح
اگر منظورتون اینه کاربر یک عبارتی رو وارد کنه و اون عبارت بین 3 موجودیت جستجو بشه به روش زیر عمل کنید

create procedure p_search (@Search nvarchar(50))
AS
select * from tbl_test
where name like '%'+@Search+'%' OR family like '%'+@Search+'%' OR tel like '%'+@Search+'%'

مرتضی تقدمی
دوشنبه 03 آذر 1393, 13:48 عصر
سلام
اگر بخواهيد كاربر براساس هركدام از پارامترها كه خواست جستجو رو انجام بده از كد زير استفاده كنيد:


CREATE PROCEDURE sp_select_tbl_test
@Name nvarchar(20),
@Lname nvarchar(30),
@Tell nvarchar(15)

as

select * from tbl_test
where
(Name like '%'+@Name+'%' or @Name is null or @Name = '') and
(Lname like '%'+@Lname+'%' or @Lname is null or @Lname = '') and
(Tell like '%'+@Tell+'%' or @Tell is null or @Tell = '')

موفق باشيد

tazarvmmr
دوشنبه 03 آذر 1393, 16:36 عصر
شاید منظورتون اینه که بر اساس هر کدوم از این پارامترها جستجو کنه به شرطی که برای اون پارامتر مقداری در نظر گرفته شده باشه، یعنی اگر به sp مقداری برای نام خانوادگی فرستادیم و دو پارامتر دیگر رو خالی گذاشتیم فقط بر اساس نام خانوادگی و اگر برای نام خانوادگی و تلفن مقدار دهی کردیم بر اساس این دو تا جستجو کنه میتونین از این کد استفاده کنین:


CREATE PROCEDURE sp_select_tbl_test
@Name nvarchar(20) = '',
@Lname nvarchar(30) = '',
@Tell nvarchar(15) = ''

as

select *
from tbl_test
where (Name like Case When @Name <> '' Then '%'+@Name+'%' else Name End) OR
(LName like Case When @Lname <> '' Then '%'+@Lname+'%' else LName End) OR
(Tell like Case When @Tell <> '' Then '%'+@Tell+'%' else Tell End)