Mic*_*l A 3 sql t-sql sql-server sql-server-2008
我有以下声明:
insert into forecast_entry.user_role_xref
( user_master_id ,
role_id ,
created_date ,
created_by
)
values
( 276 , -- user_master_id - int
101 , -- role_id - int
getdate() , -- created_date - datetime
'MICHAELSK' -- created_by - varchar(20)
)
Run Code Online (Sandbox Code Playgroud)
我需要为role_id 101-355生成一行(所以上面的语句相同,除了使用role_id递增重复).最好的方法是什么?为了完成工作,我打算编写一个快速的C#应用程序,它将有一个循环,但我确信这不是最好的方法,并希望在这里学到一些东西,以避免将来这样做(因为我'我确定这种情况很常见).
小智 11
这是我使用的,只需根据需要进行修改.在这里,我使用循环变量向表中添加了一堆序列号:
USE MyDB
GO
DECLARE @MyCounter as INT
SET @MyCounter = 1 -- to use this multiple times you can just
-- change the starting number and run again
-- if you do not want duplicate numbers
WHILE @MyCounter < 1000 -- any value you want
BEGIN
INSERT INTO [MyDB].[dbo].[MyTable]
([NumberField])
VALUES
(@MyCounter) -- insert counter value into table
set @MyCounter = @MyCounter + 1; -- increment counter
END
Run Code Online (Sandbox Code Playgroud)
你应该使用数字表,如果你没有数字表,你可以master..spt_values
像这样使用:
insert into forecast_entry.user_role_xref
( user_master_id ,
role_id ,
created_date ,
created_by
)
select 276, -- user_master_id - int
number, -- role_id - int
getdate() , -- created_date - datetime
'MICHAELSK' -- created_by - varchar(20)
from master..spt_values
where type = 'P' and
number between 101 and 355
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24700 次 |
最近记录: |