PDA

View Full Version : پروسیجر و مقدار بازگشتی بصورت رشته



xsbehx
جمعه 26 تیر 1394, 18:07 عصر
سلام
من میخوام یک مقدار رشته رو داخل پروسیجر برگردونم اما همونطور که می دونید بصورت معمولی پروسیجر فقط می تونه نوع عددی یا جدول رو برگردونه
برای اینکار چیکار می تونم بکنم؟
همچینی چیزی رو می خوام پیاده کنم:


create procedure spTest2
@Input int
as
begin
if (@Input = 1)
select '1'
else
select '2'
end

xsbehx
جمعه 26 تیر 1394, 22:35 عصر
تو روش linq کافیه اونجا که قراره داده ای بازگشت داده بشه یه کلمه کلیدی out نوشته بشه :


declare @R nvarchar(50)
if (@Input = 1)
set @r = '1'
else
set @r = '2'

return @r out


بعد برای استفاده مثلا اینطوری استفاده بشه:


txtValue.Text = db.spTest(1).Single().@out;


مشکل اینه که تو Entity FrameWork کار نمی کنه.
حالا اینو هم می گم که اگر کسی بعد اومد اینجا شاید بدردش خورد.
من خودم این مشکل با استفاده از ارسال عدد به جای رشته حل کردم ولی اینهم مشکلش اینه که linq با EF فرق می کنه
تو linq کافیه تو پروسیجر بنویسی اگر شرط برقرار بود مثلا return 1 اگر نبود return 2 بعد بیای تو سی شارپ بگی که اگر خروجی 1 بود فلان کارو کن و اگر 2 بود فلان کار ولی تو EF اگر داده رو تو procedure مورد نظرتون return کنید مثلا بگید return 51 یا هر عدد دیگه ای، مقدار برگشتی یا null خواهد بود یا 1-
پس برای استفاده باید اینطوری عمل کنید :
به جای return 1 یا return 2 یا ... از select 1 یا select 2 یا ... استفاده کنید و تو سی شارپ برای دسترسی به داده برگشتی اینطوری عمل کنید:


int ReturnValue = db.spUsers_CheckBeforeSignUp(fldEmail, fldCellPhone).Single().Value;


حالا اگر کسی می دونه سوال یک رو تو EF چطوری حل می کنند بگه تا استفاده کنیم

emilly
جمعه 26 تیر 1394, 23:44 عصر
سلام
من میخوام یک مقدار رشته رو داخل پروسیجر برگردونم اما همونطور که می دونید بصورت معمولی پروسیجر فقط می تونه نوع عددی یا جدول رو برگردونه
برای اینکار چیکار می تونم بکنم؟
همچینی چیزی رو می خوام پیاده کنم:


create procedure spTest2
@Input int
as
begin
if (@Input = 1)
select '1'
else
select '2'
end




سلام دوست عزیز

قدیما ما واسه یه همچنین کارهایی این طور عمل میکردیم البته توی اس کیو ال ............
من با سی شارپ و linq کار نکردم فقط توی اس کیو ال



CREATE PROCEDURE spTest2
@input int
AS
BEGIN
if (@input=1)
print 'ok'
else
print 'more attention'
END
GO

xsbehx
شنبه 27 تیر 1394, 00:54 صبح
^_^
فرقی نمی کنه select بنویسی یا print
دستور من با ماله شما فرقی نمی کنه
در هر دو صورتش پروسیجر نمی تونه مقدار برگشتی از نوع رشته ای به سی شارپ برگردونه
تو خو Sql که می شه.
تو سی شارپ نمی شه

fakhravari
شنبه 27 تیر 1394, 10:05 صبح
اخرش بنویس select item
اگنه نوع int با cast تبدیل کن و برعکس
و در C#‎‎ با SqlCommand.ExecuteScalar (https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=v s.110).aspx)

بگیرش

حالت entity با firstor def