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 میشود و در نتیجه در نیاز به تبدیل اضافی خواهید داشت که نیازی نیست و میتوانم از آن اجتناب کرد
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.