Hallo,
ich habe ein Problem mit meinem Cursor.. Ich bin kein Entwickler und versuche gerade einen Cursor zu bauen, der eine Gruppenzugehörigkeit anhand des Datentyps ändert..
Ich hole mir im ersten Moment das Feld ANR und DisplayType.. Hierbei ist der DisplayType der "Typ" der Adresse (int 1, 2, 3...)
Nun möchte ich den Datentyp abfragen (was schon geht) und anhand dessen in die richtige Gruppe stopfen..
ich habe nun folgendes Problem, wenn ich mein Update in der Tabelle [AdrGrpZord] mache, kann es passieren, dass ein Datensatz 2 mal vorhanden ist, da er mehr als einer Gruppe angehören kann.
Die GrpID ist ein PK und genau das ist mein Problem..
Mein Update versucht beide Datensätze auf z.B. GrpID = 10 zu ändern (wenn Datentyp z.B. 1 ist) was natürlich nicht geht..
Ich möchte in so einem Fall den Datensatz != 10 ändern.. Nur ich bekomme das Filtern einfach nicht hin..
Ich hoffe ihr versteht so einigermaßen was ich möchte
GrpID: 1 ANR: ADR1061 CID: 0...
GrpID: 9 ANR: ADR1061 CID: 0..
Ich möchte einen der beiden Datensätze auf z.B. GrpID 10 anpassen.
DECLARE
@c_ANR varchar(15),
@c_DT integer;
DECLARE update_type CURSOR
FOR SELECT ANR, DisplayType FROM [con_backup_2014].[dbo].[Address];
OPEN update_type
FETCH NEXT FROM update_type into @c_ANR, @c_DT
WHILE @@FETCH_STATUS = 0 BEGIN
IF(@c_DT = 1)
BEGIN
UPDATE [dbo].[AdrGrpZord]
SET GrpID = 10 WHERE ANR = @c_ANR AND GrpID != 10
FETCH NEXT FROM update_type into @c_ANR, @c_DT
END
ELSE IF(@c_DT = 2)
BEGIN
UPDATE [dbo].[AdrGrpZord]
SET GrpID = 9 WHERE ANR = @c_ANR AND GrpID != 9
FETCH NEXT FROM update_type into @c_ANR, @c_DT
END
ELSE FETCH NEXT FROM update_type into @c_ANR, @c_DT
END
CLOSE update_type
DEALLOCATE update_type;
ich habe ein Problem mit meinem Cursor.. Ich bin kein Entwickler und versuche gerade einen Cursor zu bauen, der eine Gruppenzugehörigkeit anhand des Datentyps ändert..
Ich hole mir im ersten Moment das Feld ANR und DisplayType.. Hierbei ist der DisplayType der "Typ" der Adresse (int 1, 2, 3...)
Nun möchte ich den Datentyp abfragen (was schon geht) und anhand dessen in die richtige Gruppe stopfen..
ich habe nun folgendes Problem, wenn ich mein Update in der Tabelle [AdrGrpZord] mache, kann es passieren, dass ein Datensatz 2 mal vorhanden ist, da er mehr als einer Gruppe angehören kann.
Die GrpID ist ein PK und genau das ist mein Problem..
Mein Update versucht beide Datensätze auf z.B. GrpID = 10 zu ändern (wenn Datentyp z.B. 1 ist) was natürlich nicht geht..
Ich möchte in so einem Fall den Datensatz != 10 ändern.. Nur ich bekomme das Filtern einfach nicht hin..
Ich hoffe ihr versteht so einigermaßen was ich möchte

GrpID: 1 ANR: ADR1061 CID: 0...
GrpID: 9 ANR: ADR1061 CID: 0..
Ich möchte einen der beiden Datensätze auf z.B. GrpID 10 anpassen.
DECLARE
@c_ANR varchar(15),
@c_DT integer;
DECLARE update_type CURSOR
FOR SELECT ANR, DisplayType FROM [con_backup_2014].[dbo].[Address];
OPEN update_type
FETCH NEXT FROM update_type into @c_ANR, @c_DT
WHILE @@FETCH_STATUS = 0 BEGIN
IF(@c_DT = 1)
BEGIN
UPDATE [dbo].[AdrGrpZord]
SET GrpID = 10 WHERE ANR = @c_ANR AND GrpID != 10
FETCH NEXT FROM update_type into @c_ANR, @c_DT
END
ELSE IF(@c_DT = 2)
BEGIN
UPDATE [dbo].[AdrGrpZord]
SET GrpID = 9 WHERE ANR = @c_ANR AND GrpID != 9
FETCH NEXT FROM update_type into @c_ANR, @c_DT
END
ELSE FETCH NEXT FROM update_type into @c_ANR, @c_DT
END
CLOSE update_type
DEALLOCATE update_type;
Kommentar