ورود

View Full Version : insert کردن اطلاعات بوسیله نتایج دستور select



mhamedm2008
چهارشنبه 12 فروردین 1394, 02:05 صبح
با سلام به دوستان
من یک پروسیجر نوشتم که کارش insert کردن اطلاعات هست.حالا می خوام کاری کنم.توی جدول user1 من 5 تا کاربر دارم.حالامی خوام پارامترهایی که برای پروسیجر رو ارسال می کنم به ازای اطلاعات خروجی که از جدول user1 سلکت میشه رو قرار بده.

alter proc sp_ADV_insert_alluser
@SendIP varchar(20),
@az int,
@mozoo nvarchar(100),
@body ntext,
@ser int output

as
declare @be int
declare @sendDate nvarchar(25)
select @sendDate = dbo.[SDate] (GETDATE())
select @ser= max(ser) from adv
set @ser = @ser + 1
begin

select @be=id from user1 where active1 = 1

insert into [adv]
(
ser,
sendDate,
SendIP,
az,
be,
mozoo,
body,
isread,
IsDelAz,
IsDelBe
)

values

(
@ser,
@sendDate,
@SendIP,
@az,
@be,
@mozoo,
@body,
0,
0,
0
)
return @ser
end

یعنی اینکه پارامتر @be که از طریق سلکت از جدول user1 بدست میاد که شامل مقادیر 25 و 26 و 27 و 28 هست رو در جدول adv قرار بده.نمی دونم باید چه جوری اینکار رو انجام بدن.فکر کنم باید با یک حلقه تکرار و خروجی گرفتم توسط دستور زیر انجام بشه

select @be=id from user1 where active1 = 1
منتظر جواب های دوستان هستم
ممنون

sohil_ww
چهارشنبه 12 فروردین 1394, 11:01 صبح
آین کد شیوه کارو بهت نشون میده من ساختار جدولاتو نمی دونم فقط تونستم یک مثال برات بنویسم که با دیدنش بدونی باید چی کار کنی
موفق باشی
@SendIP varchar(20),@az int,
@mozoo nvarchar(100),
@body ntext,
@ser int output

as
declare @be int
declare @sendDate nvarchar(25)
select @sendDate = dbo.[SDate] (GETDATE())
select @ser= max(ser) from adv
set @ser = @ser + 1
begin

select @be=id from user1 where active1 = 1

insert into [adv]
(
ser,
sendDate,
SendIP
az,
be,
mozoo,
body,
isread,
IsDelAz,
IsDelBe
)
select id as be,(GETDATE() as sendDate,max(ser) as ser from adv,user1 where active=1

mhamedm2008
چهارشنبه 12 فروردین 1394, 11:27 صبح
دوست عزیز خیلی ممنون
ولی متوجه نشدم.ببین این کد رو به صورت زیر خلاصه کردم
alter proc sp_ADV_insert_alluser
@SendIP varchar(20),
@az int,
as
begin
insert into [adv]
(SendIP,az,be) values (@SendIP,@az,@be)
end

من دو تا پارامتر به @SendIP و @az رو به پروسیجر می فرستم. و پروسیجر باید توی جدول adv به ازای id های جدول user بیاد اطلاعات را وارد کند.
فرض کن id جدول user شامل 20 و 21 و 22 و23 و 24 و 25 هست
وقتی من پارامتر رو @SendIP را برابر 192.1.1.1 و @az را 100 می فرستم توی جدول adv باید مقادیر زیر وارد بشه


192.1.1.1 100 20
192.1.1.1 100 21
192.1.1.1 100 22
192.1.1.1 100 23
192.1.1.1 100 24
192.1.1.1 100 25


انشالله که منظورمو تونسته باشم خوب بگم
بازم ممنون

Mahmoud.Afrad
چهارشنبه 12 فروردین 1394, 19:14 عصر
به جای values ... به ترتیب ستونهایی که در پرانتز ذکر کردی یک سلکت بگیر. میتونی از پارامترهای ارسالی هم در سلکت استفاده کنی.

ALTER PROCEDURE [dbo].[sp_ADV_insert_alluser]
@SendIP varchar(20),
@az int
AS
BEGIN
insert into [adv] (SendIP,az,be)
select @SendIP, @az, [user].id from [user]
END

mhamedm2008
چهارشنبه 12 فروردین 1394, 20:59 عصر
خیلی خیلی ممنون:تشویق: