3
我想如果我能在SQLite的運行下面的過程:SQLite有遊標嗎?
set nocount on
select T.ID, max(T.SerialNo) as SerialNo
into #Tmp_Ticket_ID
from Ticket as T, Ticket as inserted
where t.ID = inserted.ID
group by T.id having count(*) > 1
declare zeiger cursor for
select SerialNo
from #Tmp_Ticket_ID
declare @SerialNo int
OPEN Zeiger
FETCH NEXT FROM zeiger INTO @SerialNo
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
update T
set ID = (select max(id) + 1 from Ticket)
from ticket AS T, #Tmp_Ticket_ID as I
where t.serialNo = i.serialno
and I.Serialno = @SerialNo
END
FETCH NEXT FROM zeiger INTO @SerialNo
END
CLOSE Zeiger
DEALLOCATE Zeiger
DROP TABLE #Tmp_Ticket_ID
這是一個MS-SQL2000其清潔TICKET_ID的雙打在以下structur的給定表票務一個小程序:
create table Ticket (serialNo int identity(1,1) not null
, ID as int not null
, Ticket_issue as varchar(50)
, some_more_field varchar(500))
由於來自不同數據庫的簡單合併,ticket_id變得不唯一。要重新編號來解決這個問題,我開發了這個程序,但是現在我們在SQLite-db上有類似的問題。
似乎不重新編號的重複票。刪除不是解決方案。還需要在列表中記錄舊的ID和新的ID ... – Ice 2009-12-09 22:54:29
好的,現在我知道你在做什麼,也許是一個4步的過程:使用上面的where子句將dups插入臨時表,如上所述刪除dups,將臨時表中的dups重新編號並將其插回。 – 2009-12-09 23:02:44
因此,在sqlite中沒有遊標。 – Ice 2009-12-10 18:56:48