T-SQL opdatering af poster i cursor
Jeg har laver flg. T-SQL kode som skal hente indholdet i en tabel og tilrette indholdet i feltet Afdelingsnr så kun de tre sidste cifre bevares og resten smides væk:DECLARE @pk_id AS INT
DECLARE @afd AS NVARCHAR(7)
DECLARE afdelinger_cursor CURSOR LOCAL DYNAMIC SCROLL_LOCKS
FOR
SELECT PK_InstitutionID, Afdelingsnr
FROM tblInstitution_test
FOR UPDATE OF Afdelingsnr
OPEN afdelinger_cursor
-- Hent den første post i postsættet
FETCH NEXT FROM afdelinger_cursor INTO @pk_id, @afd
-- Gennemløb postsættet indtil slutningen af det
WHILE @@FETCH_STATUS = 0
BEGIN
-- Hvis afd = * skal der springes videre til den næste post
IF @afd = '*'
BEGIN
FETCH NEXT FROM afdelinger_cursor
CONTINUE
END
--UPDATE tblInstitution_test SET Afdelingsnr = Right(@afd, 3) WHERE PK_InstitutionID = @pk_id
UPDATE tblInstitution_test SET Afdelingsnr = 'test' WHERE PK_InstitutionID = 2
-- Hent næste post i postsættet
FETCH NEXT FROM afdelinger_cursor
END
CLOSE afdelinger_cursor
DEALLOCATE afdelinger_cursor
GO
P.t. består et afdelingsnr af enten syv cifre eller en asteriks (*), men de skal fremover kun være tre cifre. Datatypen er for Afdelingsnr er NVARCHAR(7).
Jeg kan ikke få sql'en til at opdatere tabellen. Hvad gør jeg forkert?
