PDA

View Full Version : خطا در اجراي Stored procedure



bahareee
سه شنبه 04 اسفند 1388, 12:53 عصر
سلام
من نام Table و ستونها را بصورت پارامتر به SP ميفرستم
كد SP :

declare @SQL varchar(500)
set @SQL='update '+ @Tbl + ' set Code='+@Code+' ,Name='+@Name+' where ID='+@ID
EXEC (@SQL)

@Tbl نام جدول
@Name و @Code نام ستونهاي جدول هستند
بعد از اجرا Error ميده:
Syntax error converting the nvarchar value 'update TableName set Code=sth ,Name=sth where ID=' to a column of data type int
ميشه منو راهنمايي كنيد...............

amin_alexi
سه شنبه 04 اسفند 1388, 13:33 عصر
فكر كنم متغيير ID شما مقدار نداره واسه همين اين Error‌رو ميده

bahareee
سه شنبه 04 اسفند 1388, 14:00 عصر
فكر كنم متغيير ID شما مقدار نداره واسه همين اين Error‌رو ميده
با break point بررسي كردم ، ID مقدار ميگيره
مشكل در دستورات SQL هست
مثال زير رو ببينيد

DECLARE @A NVARCHAR
DECLARE @B int
SET @B=1
SET @A= @B
PRINT @A
با اجراي دستور فوق مقدار 1 در خروجي چاپ ميشه ولي اگر دستور فوق را بصورت زير تغيير دهيم باز همان Error مشابه رو ميده........

DECLARE @A NVARCHAR
DECLARE @B int
SET @B=1
SET @A= 'Example'+@B
PRINT @A

ERROR :
Syntax error converting the varchar value 'Example' to a column of data type int.

لطفاً به من كمك كنيد

amin_alexi
سه شنبه 04 اسفند 1388, 14:21 عصر
من مثال شما رو به صورت زير نوشتم

DECLARE @A NVARCHAR(40)
DECLARE @B int
SET @B=1
SET @A= 'Example'+ cast(@B as nvarchar(20))
PRINT @A

الان ديگه مشكل نداره
مي تونيد از Cast براي تبديل نوع استفاده كنيد
در ضمن تعريف nvarchar به صورت زير فقط يك كاراكتر ذخيره ميكنه !

DECLARE @A NVARCHAR
دقت كنين در Procedure به اين صوت استفاده نكنين