PDA

View Full Version : دستور Insert + Case



myexir
چهارشنبه 24 مهر 1387, 16:59 عصر
می خواهم یک Query بنویسم که در صورتی که پارامتر ارسالی به آن (که از فرم خونده میشه) برابر 1 بود ،در یک سطر از جدول اطلاعات را insert کند. در صورتی که برابر 2 بود ،در یک سطر از جدول اطلاعات را insert کند و به همین ترتیب الی آخر.
این رو با case و insert چه جوری می تونم بنویسم؟

کد زیر درسته؟ لطفا اصلاحش کنید


CASE @num
WHEN'1'THEN
INSERTINTO RegComp(FirstName,LasttName)VALUES('aa','bb')
WHEN'2'THEN
BEGIN
INSERTINTO RegComp(FirstName,LasttName)VALUES('aa','bb')
INSERTINTO RegComp(FirstName,LasttName)VALUES('cc','dd')
END
WHEN'3'THEN
BEGIN
INSERTINTO RegComp(FirstName,LasttName)VALUES('aa','bb')
INSERTINTO RegComp(FirstName,LasttName)VALUES('cc','dd')
INSERTINTO RegComp(FirstName,LasttName)VALUES('ee','ff')
END

mannai29
چهارشنبه 24 مهر 1387, 20:11 عصر
دستور case را نمی توانید در خارج از یک select به کار ببرید . در کدی که نوشتید به راحتی میتوانید از if استفاده کنید .
و راه منطقی تر استفاده از حلقه به تعداد متغیر num@ است. حلقه هم در SQL با While پیاده سازی می شود :
عبارت منطقی While
Begin
دستورات
End
مثلا


While @num>0
begin
INSERTINTO RegComp(FirstName,LasttName)VALUES('aa','bb')
set @num=@num-1
end

پیروز باشید.

nedata
چهارشنبه 24 مهر 1387, 23:52 عصر
اینطوری نمی تونید بنویسید



Insert Into ....
values...
where @Num=1
Insert Into...
Values...
where @Num=2
...............................................

myexir
پنج شنبه 25 مهر 1387, 09:12 صبح
در این کدی که شما نوشتید هر دفعه که حلقه اجرا میشه یک چیز ثابت رو در جدول درج میکنه. مثلا اگر num=2 باشه دو بار FirstName='aa',LasttName='bb' رو وارد میکنه اما من میخوام در هر دفعه محتوای سطر هام متفاوت باشه. اینجاش رو چی کار کنم؟

mannai29
پنج شنبه 25 مهر 1387, 10:53 صبح
بستگي به اين دارد كه شما چه نوع مقاديري مي خواهيد درج كنيد و اين مقادير از كجا و با چه منطقي درج مي شوند. آيا تصادفي است يا به ازاي هر سطر در درج كردن قانون خاصي دارد؟
به عنوان مثال شما با يك كنترل كننده درون حلقه و قبل از دستور درج مي توانيد مقادير درج شونده خود را كنترل كنيد.

While @num>0
begin
if @Num=1
INSERTINTO RegComp(FirstName,LasttName)VALUES('aa','bb')
if @Num=2
INSERTINTO RegComp(FirstName,LasttName)VALUES('cc','dd')
.
.
.
set @num=@num-1
end
يا مي توانيد مقادير خود را در متغير بريزيد :


declare @X1 varchar(50),@x2 varchar(50)
While @num>0
begin
if @Num=1
begin
set @x1='aa'
set @x2='bb'
end
if @Num=2
begin
set @x1='cc'
set @x2='dd'
end
.
.
.
INSERTINTO RegComp(FirstName,LasttName)VALUES(@x1,@x2)
set @num=@num-1
end