PDA

View Full Version : خطا در اجرا SP



mojtaba_e
دوشنبه 15 شهریور 1389, 22:15 عصر
سلام و خدا قوت به تمامی دوستان

من در یک برنامه می خوام یک SP اجرا کنم که این SP سه ارامتر ورودی و دو پارامتر خروجی داره وقتی که SP داخل برنامه می خوام اجرا کنه Error زیر رو می ده که نمی دونم چیه ؟
اگر لطف کنین ...

String[3]: the Size property has an invalid size of 0.

این خطا تو خط اجرای cmnd.ExecuteNonQuery(); میده

Rejnev
دوشنبه 15 شهریور 1389, 22:19 عصر
در صورت امکان خود SP و یاPrototype اش و متنی که در CommandText برای اجرا می ریزید رو بذارید.

mojtaba_e
سه شنبه 16 شهریور 1389, 01:04 صبح
@UserName nvarchar(50),
@Question nvarchar(50),
@Reply nvarchar(50),
@Password nvarchar(50) output,
@IDUserAccount int output

AS
BEGIN

if Exists(select UserName,Question,Reply from UserAccount where UserName=@UserName and Question=@Question and Reply=@Reply)
begin

select @Password=[password] from UserAccount where UserName=@UserName and Question=@Question and Reply=@Reply

select @IDUserAccount=ID from UserAccount where UserName=@UserName and Question=@Question and Reply=@Reply


end
else
begin
set @IDUserAccount=-1
set @Password =''
end


--------------------------------------------------------------

Function



SqlCommand cmnd = new SqlCommand();
cmnd.Connection = conn;
cmnd.CommandText = "SP_GetMePass";
cmnd.CommandType = CommandType.StoredProcedure;
cmnd.Parameters.AddWithValue("@UserName", strUserName);
cmnd.Parameters.AddWithValue("@Question", strQuestion);
cmnd.Parameters.AddWithValue("@Reply", strPaas);
cmnd.Parameters.Add("@Password",SqlDbType.NVarChar);
cmnd.Parameters.Add("@IDUserAccount",SqlDbType.Int);
cmnd.Parameters["@Password"].Direction=ParameterDirection.Output;
cmnd.Parameters["@IDUserAccount"].Direction=ParameterDirection.Output;
conn.Open();
cmnd.ExecuteNonQuery();
IDUserAccount=int.Parse(cmnd.Parameters["@IDUserAccount"].Value.ToString());
strPaas=cmnd.Parameters["@Password"].Value.ToString();
conn.Close();

linux
چهارشنبه 17 شهریور 1389, 23:06 عصر
یکی به داد ما برسه
آنجایی که پارامتر از نوع nvarchar می سازید باید سایزش را هم اعلام کنید

manij_mhm
چهارشنبه 17 شهریور 1389, 23:42 عصر
سلام.

آنجایی که پارامتر از نوع nvarchar می سازید باید سایزش را هم اعلام کنید

کدوم خط کدش سایزو مشخص نکردن؟ ایشون که فکر کنم همه سایزارو تعیین کرده!


set @Password =''


یه space بذارید ببینید شاید مشکل از این باشه.

mojtaba_e
دوشنبه 22 شهریور 1389, 21:12 عصر
دوستان من جواب نگرفتم
خیلی واجبه لطفا ...

Rejnev
دوشنبه 22 شهریور 1389, 22:09 عصر
من تا بحال با out كار نكردم ولي براي كار راه اندازي فعلا اينطوري عمل كن:



--in sql:
create proc myproc @a nvar...,@b nvar... ,... as
begin
declare @out1 nvar, @out2 int ,...
if ... then @out1=..., ...

select @out1 ,@out 2
end


//in csharp:
cmd_click(...)
{
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=new SqlCommand();
da.SelectCommand.Connection=new SqlConnection(...);
da.SelectCommand.CommandText="Exec myproc '"+txt1.Text+"' ,'"+txt2.Text+"' ,'"+txt3.Text+"' ";
DataTable dt=new Datatable();
da.Fill(dt);

strPass=dt.Rows[0][0].ToString();
str2=dt.Rows[0][1].ToString(); //,...
}

mojtaba_e
دوشنبه 22 شهریور 1389, 23:51 عصر
ایده جالبی بود :تشویق:
ولی یعنی به جای پیدا کردن راحل ، سوال رو پاک کنم