使用每行作为插入到表中来遍历表的行

问题描述 投票:0回答:1

我有一个名为Reviews的表,对于这个问题,我认为这个内容的内容不是太多,但是我想逐一浏览该表的每一行,并将每一行中的数据作为一部分插入语句的说明。作为正在使用的每一行的一部分,我需要将一个整数(称为Evid)加1,因为该整数需要用作Insert Into语句的一部分。因此,第一行将包含1,第二行将包含2,依此类推。

我正在使用Advantage Architect,下面是我如何看待这一工作的粗略想法,我知道我需要帮助。

我要用于遍历的表的示例:

IDENT|REFERENCE|TITLE
1234 | TEST    | testing 
4456 | TEST2   | testing2 

而且我想插入另一个表,看起来像这样。从上面经过的每一行将用于在下表中插入多行,但将EVID保留为顺序的INTEGER值。

IDENT|REFERENCE|TITLE    |STAFF |EVID
1234 | TEST    | testing |STAFF1| 1
1234 | TEST    | testing |STAFF2| 1
4456 | TEST2   | testing2|STAFF1| 2
4456 | TEST2   | testing2|STAFF2| 2

_

declare evid integer;
declare cur cursor;

evid = 1;

open cur

//Do Insert Into
//Evid +1;
Close cur;
sql loops cursor advantage-database-server
1个回答
0
投票

有关使用光标的相关信息,请参见online help

修改您的问题的示例代码:

DECLARE @evid Integer;
DECLARE cur CURSOR;    

OPEN cur As SELECT * FROM sourceTable;

@evid = 1;


WHILE FETCH cur DO
    INSERT INTO destination (IDENT, REFERENCE, TITLE, STAFF, EVID)
        VALUES (cur.IDENT, cur.REFERENCE, cur.TITLE, 'STAFF1', @evid);
    INSERT INTO destination (IDENT, REFERENCE, TITLE, STAFF, EVID)
        VALUES (cur.IDENT, cur.REFERENCE, cur.TITLE, 'STAFF2', @evid);

    @evid = @evid + 1;
END WHILE;


CLOSE cursor1;
© www.soinside.com 2019 - 2024. All rights reserved.