PDA

View Full Version : مقدار دهی به متغیر در store proceger



googoli
شنبه 03 دی 1390, 08:55 صبح
با سلام خدمت اساتید گرامی
می می خواستم بدونم که چطور می تونم به یه متغیر در store proceger مقدار بدم و مهمتر از اون مقداری رو به عنوان جواب از store proceger دریافت کنم ؟

mmd2009
شنبه 03 دی 1390, 11:26 صبح
با سلام

منظورتون اینه که میخوایید به SP یک پارامتر ارسال کنید ؟

منظورتون رو از خروجی هم متوجه نشدم ؟ یعنی پارامترتون out باشه یا اینکه نتیجه ی یک عملیات رو میخوایید ؟

یه کم بیشتر توضیح بدید

موفق باشید

xcomlock
شنبه 03 دی 1390, 11:47 صبح
فکر کنم منظورتون این باشه :

string Field;
string MyField;
SqlConnection Con = new SqlConnection(ConnectionString);
Con.Open();
SqlCommand Com = new SqlCommand("SELECT * FROM [Table] WHERE (MyField=@Field)", Con);
Com.Parameters.Add(new SqlParameter("@Field", SqlDbType.NChar, 20)).Value = Field;
SqlDataReader reader = Com.ExecuteReader();
if (reader.Read())
{
MyField = Convert.ToString(reader["MyField"]);
}

ورودی : Field
خروجی : MyField

googoli
شنبه 03 دی 1390, 11:52 صبح
مثلا من در اسکیوال همچین دستوری رو می خوام داشته باشم

declare @state int
if @state=1
delete from table where code = @code

حالا مشکل من این هست که چطوری متغیر @state رو برابر 1 کنم تا مثلا دستور delete اجرا بشه

googoli
یک شنبه 04 دی 1390, 09:57 صبح
string Field;
string MyField;
SqlConnection Con = new SqlConnection(ConnectionString);
Con.Open();
SqlCommand Com = new SqlCommand("SELECT * FROM [Table] WHERE (MyField=@Field)", Con);
Com.Parameters.Add(new SqlParameter("@Field", SqlDbType.NChar, 20)).Value = Field;
SqlDataReader reader = Com.ExecuteReader();
if (reader.Read())
{
MyField = Convert.ToString(reader["MyField"]);
}




با این دستورات من امتحان کردم ولی جواب نگرفتم
حداقل اگر نمیشه بگید تا من بدونم

xcomlock
یک شنبه 04 دی 1390, 10:03 صبح
میشه بگی چرا نمیشه ؟ چه اروری داد ؟

googoli
یک شنبه 04 دی 1390, 11:07 صبح
اروری که میده میگه چنین تابعی وجود ندارد یعنی اصلا بهش مقدار اختصاص نمیده چه برسه که بخونه

xcomlock
یک شنبه 04 دی 1390, 17:16 عصر
کدوم تابع ؟ لطفا متن خطا رو عینا بزارید.

googoli
دوشنبه 05 دی 1390, 22:48 عصر
با تشکر از اساتید مشکل من حل شد
ولی به یه مشکل دیگه بر خوردم که کدها رو می گذارم تا از شما راهنمایی بگیرم
خب این تابع اسکیوال من هست

BEGIN

declare @ok nvarchar(50) select @ok='ok insert'
SET NOCOUNT ON;
if exists(select * from TblProject where code=@code)
begin
update TblProject set projectcode=@pcode,Title=@tit,tabaghat=@tabaghat,A rea=@Area,address=@address,phon=@ph,Employer=@Empl oyer,Office=@Office,phon2=@ph2,CEO=@CEO,phon3=@ph3 ,mobil=@mob where code=@code
end
else
begin
insert into TblProject(projectcode,Title,tabaghat,Area,address ,phon,Employer,Office,phon2,CEO,phon3,mobil)VALUES (@pcode,@tit,@tabaghat,@Area,@address,@ph,@Employe r,@Office,@ph2,@CEO,@ph3,@mob)
end
END


و این هم کد سی شارپ

string state = string.Empty;
open();
SqlDataReader Dreader = _sqlcmd.ExecuteReader();

if (Dreader.Read())
{
state =Convert.ToString(Dreader["@ok"]);
}
close();
return state;


من هنگامی که مقدار بازگشتی تابع رو توی یه متغیر میریزم و توی یه پیغام نمایشش میدم متن پیغام خالی هست حالا باید چکار کنم؟

googoli
سه شنبه 06 دی 1390, 12:24 عصر
کسی از اساتید من رو راهنمایی نمی کنه ؟