PDA

View Full Version : مشکل با Stored Procedure



Babak-Aghili
پنج شنبه 07 مهر 1384, 17:27 عصر
سلام.

متن کد و متن Stored Proc را نوشتم ام . خطایی که میگیره میگه : Invalid Cast Operation .... :عصبانی:


CREATE PROCEDURE LoginProc
(@uId NVARCHAR(20), @uPass NVARCHAR(20), @uName NVARCHAR(20) OUTPUT)
AS
SET @uName =( SELECT @uName FROM TblUsers WHERE
(TblUsers.userId = @uId AND TblUsers.userpassword = @uPass))
GO


SqlCommand cmd= new SqlCommand();
cmd.Connection = con;
cmd.CommandText="LoginProc";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@uId",SqlDbType.NVarChar,20,"userId");
cmd.Parameters.Add("@uPass",SqlDbType.NVarChar,20,"userPassword");
cmd.Parameters.Add("@uName",SqlDbType.NVarChar,20,"userName");

cmd.Parameters["@uId"].Value= textBox1.Text;
cmd.Parameters["@uPass"].Value= textBox2.Text;
cmd.Parameters["@uName"].Direction = ParameterDirection.Output;
cmd.Parameters["@uName"].Value = "";

con.Open();
SqlDataReader reader= cmd.ExecuteReader();
bool b = reader.Read();

string name = (string) cmd.Parameters["@uName"].Value;
MessageBox.Show(name);


:ناراحت:

Navid7h
پنج شنبه 07 مهر 1384, 18:07 عصر
فکر شما با دستور Set می خواهید یک مقدار خروجی return کنید ؟؟ که Nvarchar را می خواد به INT تبدیل کنه که نمیشه ! و Error میده

Navid7h
پنج شنبه 07 مهر 1384, 18:13 عصر
به این کد یه نگاهی بکنید شاید کمکتون کنه



CREATE PROCEDURE LoginProc

(
@username NVarchar( 100 ),
@password NVarchar( 100 )
)
As

DECLARE @ID INT
DECLARE @actualPassword Varchar( 100 )

SELECT
@ID = UserID,
@actualPassword = userpassword
FROM TBLUser
WHERE username = @username

IF @ID IS NOT NULL
IF @password = @actualPassword
RETURN @ID
ELSE
RETURN - 2
ELSE
RETURN - 1

اگر username پیدا نشه -1 برگشت میخوره
اگر پسورد پیدا نشه -2 برگشت می خوره
در غیر این صورت UserID برگشت میخوره

Babak-Aghili
پنج شنبه 07 مهر 1384, 18:26 عصر
کد مسخره ی خودم را هنوز نمیدونم چه مرگشه .....

ولی کد شما ... ok.... ممنون ... زحمت کشیدید .. مرسی.

Navid7h
جمعه 08 مهر 1384, 02:23 صبح
شما از کد زیر در Store Procedure خود استفاده کنید.


CREATE PROCEDURE LoginProc
(
@uId NVARCHAR(20),
@uPass NVARCHAR(20),
@uName NVARCHAR(20)OUTPUT)
AS
SELECT @uName = username
FROM TblUser WHERE
TblUser.userId = @uId AND TblUser.userpassword = @uPass

Return
GO

برای TEST هم در Query Analyzer از کد زیر استفاده کنید



declare @getvaleu as nvarchar (20)
execute loginproc2
@uid='YOUR ID',@upass='YOUR PASSWORD',@uname=@getvaleu output
print @getvaleuفکر کنم مشکلتون حل شه!
یه خبری بده.موفق باشی

Babak-Aghili
جمعه 08 مهر 1384, 10:22 صبح
آره .... مرسی ......

دستت درست ......

Navid7h
جمعه 08 مهر 1384, 13:04 عصر
خواهش میکنم ;)

bahman.net
پنج شنبه 07 اردیبهشت 1385, 00:54 صبح
دستتون درد نکنه