PDA

View Full Version : دریافت مقدار برگشتی از SP در دات نت 2



peymannaji
جمعه 08 تیر 1386, 14:57 عصر
سلام
من یک SP دارم بفرض مثال :




CREATE PROCEDURE insertUser

@user nvarchar(50),
@pass nvarchar(50)
as

if(select count (id) from [User] where [user]=@user)=0
begin
insert into [User] ([user],pasword) values (@user,@pass)
return 1

end

else


begin

return 0


end


در این SP دو مقدار برگشتی 0 یا 1 را داریم.... خوب من در دات نت یک اینکه چگونه به مقدار برگشتی دست پیدا کنم رو میدونم ( از طریق پارامتر Return_Value ) . اما اگه امکان داره در دات نت 2 بگید که چگونه به مقدار برگشتی Return میتونیم دست پیدا کنیم لطفا برای همین sp کد مربوطه رو محبت کنید با تشکر فراوان ...

ealireza
جمعه 08 تیر 1386, 17:15 عصر
کد زیر رو تست کن
با ExecuteSclare


CREATE PROCEDURE insertUser

@user nvarchar(50),
@pass nvarchar(50)
as

if(select count (id) from [User] where [user]=@user)=0
begin
insert into [User] ([user],pasword) values (@user,@pass)
select '1'
return 1

end

else


begin
select '0'
return 0


end

peymannaji
جمعه 08 تیر 1386, 22:10 عصر
سلام دوست عزیز ....
اگه امکان داره بگید در صفحه asp چه کدی باید بنویسم که به این صفر و یک دست پیدا کنم ... شرمنده ... چون واقعا" نمیدونم چیکار باید کرد ...

با تشکر فراوان ...

azmoodeh
جمعه 08 تیر 1386, 22:33 عصر
همونطور که دوستومن گفت به جای executenonQuery از executeScalar استفاده کن

peymannaji
جمعه 08 تیر 1386, 22:38 عصر
پس اگه دستور رو به این صورت بنویسم مشکل حل میشه????? به فرض میخوام مقدار برگشتی رو بریزم در یک متغیر




dim a as integer

a= sqlcommand.executeScalar

azmoodeh
جمعه 08 تیر 1386, 22:51 عصر
احتمالا !!

ealireza
شنبه 09 تیر 1386, 01:16 صبح
دقت نکردی !!
به کدی که گزاشتم با دقت نگاه کن !

پروسیجر رو بصورت زیر در بیار !



CREATE PROCEDURE insertUser

@user nvarchar(50),
@pass nvarchar(50)
as

if(select count (id) from [User] where [user]=@user)=0
begin
insert into [User] ([user],pasword) values (@user,@pass)
select '1'
return 1

end

else


begin
select '0'
return 0


end
بعد


int a =Sql.ExecuteSclare();
موفق باشید

PrinceDotNet
شنبه 09 تیر 1386, 01:34 صبح
می تونی از کد زیر در هنگام شناسایی پارامترها استفاده کنی :


cmd.Parameters.Add("@ReturnValue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue


و بعد از EXEC کردن Sp هم از طریق کد زیر اون رو بدست میاری :



cmd.Parameters("@ReturnValue").Value


موفق باشی

peymannaji
شنبه 09 تیر 1386, 10:14 صبح
سلام دوستان عزیز از هر دو روش نتیجه گرفتم دست شما درد نکنه ...

Sayehzendeh
شنبه 09 تیر 1386, 16:07 عصر
سلام. ولی باید using Microsoft.ApplicationBlocks.Data


#region insertUser(string UserName,string Password)
public bool insertUser(string UserName, string Password)
{
try

{
int AffectedRecords = SqlHelper.ExecuteScalar(SqlConst.CONN_STRING, "", new object[] { UserName, Password });
if (AffectedRecords > 0)
{
return true;
}
else return false;
}
catch

{
return false;
}
}

#endregion

Behrouz_Rad
شنبه 09 تیر 1386, 17:14 عصر
سلام. ولی باید using Microsoft.ApplicationBlocks.Data


ApplicationBlocks جزء دات نت نیست و به عنوان یک برنامه ی جدا نصب میشه!

__H2__
یک شنبه 10 تیر 1386, 11:33 صبح
سلام




Select '0'



علما میبخشید ولی اگر از گیومه استفاده نکنید سریعتر است مثلاً


Select 0

چون گیومه باعث ارسال String به جای Integer میشود و در نتیجه در نیاز به تبدیل اضافی خواهید داشت که نیازی نیست و میتوانم از آن اجتناب کرد