sheitoonbala
سه شنبه 12 آذر 1387, 20:31 عصر
سلام. فرض کنید توی یه کوئری 10 تا متغیر داریم به نام های p0@ و p1@ و p2@ و p3@ و .... تا p9@.
فرض کنید می خوام مقدار اینها رو تغییر بدم، ولی نمی خوام 10 بار دستور 'select @p1 = 'test رو برای تک تکشون بنویسم. می خوام توی یه حلقه while این کار رو بکنم. بصورت زیر :
DECLARE @p0 nvarchar(10)
DECLARE @p1 nvarchar(10)
DECLARE @p2 nvarchar(10)
DECLARE @p3 nvarchar(10)
DECLARE @p5 nvarchar(10)
DECLARE @p6 nvarchar(10)
DECLARE @p7 nvarchar(10)
DECLARE @p8 nvarchar(10)
DECLARE @p9 nvarchar(10)
DECLARE @i int
SET @i=0
WHILE(@i < 10)
BEGIN
EXEC ('select @p' + @i + '=''test''' )
SET @i = @i + 1
END
ولی error می ده. در واقع نمی تونه متغیرها رو انجوری توی EXEC شناسایی کنه.(حق هم داره)
کسی تا حالا همچین مشکلی داشته؟باید چه جوری کد بنویسم که بتونه متغیرها رو توی حلقه شناسایی کنه و بهشون مقدار بده؟
فرض کنید می خوام مقدار اینها رو تغییر بدم، ولی نمی خوام 10 بار دستور 'select @p1 = 'test رو برای تک تکشون بنویسم. می خوام توی یه حلقه while این کار رو بکنم. بصورت زیر :
DECLARE @p0 nvarchar(10)
DECLARE @p1 nvarchar(10)
DECLARE @p2 nvarchar(10)
DECLARE @p3 nvarchar(10)
DECLARE @p5 nvarchar(10)
DECLARE @p6 nvarchar(10)
DECLARE @p7 nvarchar(10)
DECLARE @p8 nvarchar(10)
DECLARE @p9 nvarchar(10)
DECLARE @i int
SET @i=0
WHILE(@i < 10)
BEGIN
EXEC ('select @p' + @i + '=''test''' )
SET @i = @i + 1
END
ولی error می ده. در واقع نمی تونه متغیرها رو انجوری توی EXEC شناسایی کنه.(حق هم داره)
کسی تا حالا همچین مشکلی داشته؟باید چه جوری کد بنویسم که بتونه متغیرها رو توی حلقه شناسایی کنه و بهشون مقدار بده؟