PDA

View Full Version : سوال: مشکل با پارامتر در قسمت where در storedprocedure



alireza323
سه شنبه 25 خرداد 1389, 23:43 عصر
سلام
من یه sotredprocedure نوشتم،که یه پارامتر از نوع string داره،حالا وقتی این پارامتر رو تو قسمت where قرار میدم،و از like استفاده میکنم،و چون پارامتر به صورت فارسی هست،storedprocedure هیچ مقداری رو برنمیگردونه،از دوستان کسی میدونه مشکل از کجاست؟
ممنون میشم کمکم کنید
این هم کدی هستش که مینویسم



select*
from info
where name like @name


البته این رو هم بگم که من تو قسمت like باید از % هم استفاده کنم،که با وجود پارامتر نمیدونم چطور باید این کار رو بکنم(باید هم قبل @name علامت % رو بنویسم هم بعدش)،چون به هر صورت که مینویسم،خطا میده

s.khoshfekran
چهارشنبه 26 خرداد 1389, 02:36 صبح
create proc proc1 @name nvarchar(20)
as
Select * from Employees where FirstName like 'N%' + @name + '%'

alireza323
چهارشنبه 26 خرداد 1389, 16:28 عصر
create proc proc1 @name nvarchar(20)
as
Select * from Employees where FirstName like 'N%' + @name + '%'

سلام،ممنون که به سوالم جواب دادین
ولی من وقتی این کد رو اجرا می کنم،stored procedure بازم هیچ مقداری بر نمیگردونه!!!!!!!
مشکل از کجاست؟

محمد سلیم آبادی
جمعه 28 خرداد 1389, 13:47 عصر
مشکل برمیگرده به قسمتی از برنامه که به این پروسیجر پارامتر ارسال می کنید و آن را اجرا میکنید.
بایستی کاراکتر N را قبل از رشته ی فارسی هنگام Add کردن به پروسیجر قرار بدین.

برای اینکه مطمئن بشین که پروسیجر سالم کار می کند کافیه داخل SQL Server آن را اجرا کنید. مثلا با این کد:

EXEC sp_name N'نام'

در ضمن شما می تونید کاراکتر % را عملگر + به رشته مورد نظر الحاق کنید. به این شکل:

select*
from info
where name like '%'+@name+'%';

(که البته در پست های قبلی نیز به آن اشاره شده بود)

war1351
شنبه 29 خرداد 1389, 10:05 صبح
سلام
من یه sotredprocedure نوشتم،که یه پارامتر از نوع string داره،حالا وقتی این پارامتر رو تو قسمت where قرار میدم،و از like استفاده میکنم،و چون پارامتر به صورت فارسی هست،storedprocedure هیچ مقداری رو برنمیگردونه،از دوستان کسی میدونه مشکل از کجاست؟
ممنون میشم کمکم کنید
این هم کدی هستش که مینویسم



select*
from info
where name like @name


البته این رو هم بگم که من تو قسمت like باید از % هم استفاده کنم،که با وجود پارامتر نمیدونم چطور باید این کار رو بکنم(باید هم قبل @name علامت % رو بنویسم هم بعدش)،چون به هر صورت که مینویسم،خطا میده
-----------------------------
دوست عزیز چون فیلد های ورودی فارسی هستند بهتره در شرط از توابع رشته ای RTRIM یا LTRIM یا از هردو استفاده کنی مشکلت حل میشه دلیلشم خیلی ساده است چون جهت نوشتن فارسی از راست به چپ است پس این گونه فیلد ها فضای خالی در طرف چپ ایجاد میشه



select*
from info
where RTRIM(LTRIM(name)) like RTRIM(LTRIM(@name
))



موفق و موید باشید



زکات علم آموختن آن است

soft-c
پنج شنبه 10 تیر 1389, 01:07 صبح
سلام.
من یک برنامه با دلفی دارم و می خواهم در فرم اول آن user و pass را از کاربر بگیرم اگر درست بود کاربر وارد بشه .
برای همین هم در sql یک table با نام های user و pass ایجاد کردم و مقدار 1 را درون هر دو فیلد ریختم .
بعد در دلفی روی باتن این کد را نوشتم :
if edit1.text= adotable1.fieldbyvalue('user') and edit2.text=adotable1.fieldbyvalue('pass') then
form2.show
خطا نمی گیره ولی اجرا هم نمیشه یعنی فرم 2 را نشون نمیده.
تشکر.

soft-c
جمعه 11 تیر 1389, 00:28 صبح
create procedure enterk (@use nvarchar(10),@pas nvarchar(10))
as
begin
select * from enteruse where
usern=@use and pass=@pas
end

behrouzlo
شنبه 12 تیر 1389, 13:50 عصر
فكر كنم بايد Begin و End حذف بشه

create procedure enterk (@use nvarchar(10),@pas nvarchar(10))
as
select * from enteruse where
usern=@use and pass=@pas