SQl Server 中的循环,关于循环总结一下。从何说起呢,就从跨数据库开始吧。
在Transact-SQL帮助中并没有找到for循环,估计是没有吧。无妨,while循环就够了。示例:
Declare @BillID int --单据ID
Set @BillID=1
While @BillID<5
Begin
Print @BillID
Set @BillID=@BillID+1
End
问题描述:从数据库db1中导入1到4号之间的单据。
单据主表Main: ID int identity permary
BillNo nvarchar(30)
单据分表Sub: ID int identity permary
MainID int
SubContent nvarchar(50) --分记录内容 用一个字段代替
Declare @BillID int --单据ID
Declare @NewBillID int --新单ID
Declare @MaxID int --要导入的最大ID
Set @BillID=1
Set @MaxID=5 --单据范围
--Select @MaxID=Max(ID) From db1..Main --导入所有
While @BillID<@MaxID
Begin
--先判断数据库中是否有ID为@BillID的单据
If Exists (Select [ID] From db1..Main Where [ID]=@BillID)
Begin
--导入单据表头
INSERT INTO [Main] ( [BillNo] )
Select BillNo
From db1..Main
Where ID=@BillID
Set @NewBillID=@@Identity --得到新单ID
--导入分记录 从db1读数据,但是MainID 为 新单ID:@NewBillID
Insert Into Sub ( MainID,SubContent)
Select @NewBillID,SubContent
From db1..Sub
Where MainID=@BillID
End
Set @BillID=@BillID+1
End
注意的地方:
跨数据库访问..
全文:http://www.our-code.com/news/2010723/n415357.html