日期:2014-05-16  浏览次数:20465 次

存储过程,插入结果集
大家好,我现在遇到一个这样的问题,
我有一个 只有一个列的table,里面有10个数据
select  distinct @collectorINSERT=IP from #MyTempTable


然后我想将这个表中这个仅有的字段@collectorINSERT=IP的值,插入到另一个表中[T_Control_JobQueue] 的 [Collector]


我现在遇到的问题如下。
循环插入是@collectorINSERT=IP值总是一个相同值。



declare @collectorINSERT varchar(50)


--3.查询不重复的采集器IP
select  distinct @collectorINSERT=IP from #MyTempTable


--4.添加采集任务;并返回任务SeqId
declare @collectorCount int
SET @collectorCount = 0
select @collectorCount = COUNT(distinct IP) from #MyTempTable 
while @collectorCount > 0
   begin
       INSERT INTO [dbo].[T_Control_JobQueue] (
                          [CommandType],
                          [Collector],
                          [CreateTime]
                          )VALUES(
  1,
                          @collectorINSERT,
                          GETDATE()
       SELECT @@Identity
       SELECT * from T_Control_JobQueue where SeqId= @@Identity
       SET @collectorCount = @collectorCount -1
   end

------解决方案--------------------
简单多了,我看你那个while是没有对ip提取做循环,所以只能搞出一串相同
------解决方案--------------------
引用:
Quote: 引用:

你这样一条一条处理,要不换游标吧,逻辑比较容易控制


好吧。。。

游标弄出来了




--3.查询不重复的采集器IP
declare @collectorINSERT varchar(50)
begin
DECLARE myCusor CURSOR FOR
    select  distinct IP from #MyTempTable
    
    OPEN myCusor    
FETCH NEXT FROM myCusor INTO @collectorINSERT
WHILE @@FETCH_STATUS = 0
  BEGIN
       INSERT INTO [dbo].[T_Control_JobQueue] (
          [OperationType],
                          [CommandType],
                          [CommandValue],
      &nbs