Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


cursor hoppar över poster!?

Postades av 2003-07-03 20:14:43 - Hobil Haidari, i forum sql-server/msde, Tråden har 5 Kommentarer och lästs av 1014 personer

tja,
har ett besynnerligt problem, någon som vet varför, jag har en helt vanligt t-sql cursor sats.
Kör jag enbart SQL satsen som fyller cursorn funkar den utmärkt

Men när jag kör hela harangen med fyllning av cursor och traversering av den då uppträder något märkligt fenomen.

Lite exempel kod
<code>
USE pubs
GO

-- Declare the variables to store the values returned by FETCH.
DECLARE @au_lname varchar(40), @au_fname varchar(20)
DECLARE @iCounter smallint


DECLARE authors_cursor CURSOR FOR
SELECT au_lname, au_fname FROM authors
WHERE au_lname LIKE "B%"
ORDER BY au_lname, au_fname

SET @iCounter = 1

OPEN authors_cursor

-- Perform the first fetch and store the values in variables.
-- Note: The variables are in the same order as the columns
-- in the SELECT statement.

FETCH NEXT FROM authors_cursor
INTO @au_lname, @au_fname

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN


-- Concatenate and display the current values in the variables.
PRINT "No: " + CAST(@iCounter AS varchar(3)) + " Author: " + @au_fname + " " + @au_lname

SET @iCounter = iCounter + 1

-- This is executed as long as the previous fetch succeeds.
FETCH NEXT FROM authors_cursor
INTO @au_lname, @au_fname
END

CLOSE authors_cursor
DEALLOCATE authors_cursor
GO
</code>

Och trots att SQL satsen som fyller cursorn fungerar utmärkt, får jag resultat som följer nedan:
<code>
No: 1 Author: Abraham Bennet
No: 2 Author: Reginald Blotchet-Halls
No: 3 Author: Abraham Bennet
No: 4 Author: Reginald Blotchet-Halls

No: 6 Author: Reginald Blotchet-Halls
No: 7 Author: Abraham Bennet
No: 8 Author: Reginald Blotchet-Halls

No: 10 Author: Abraham Bennet
No: 11 Author: Reginald Blotchet-Halls
No: 12 Author: Abraham Bennet
No: 13 Author: Reginald Blotchet-Halls
</code>

Den hoppar helt sonika över vissa!? Det står visserligen i dokumentationen att den gör endast aktuell while sats om den senaste FETCH INTO lyckades, men varför skulle den inte lyckas med det, eftersom SQL satsen till cursorn är ju rätt...

SNälla, någon som kan svara på varför det händer och vad man kan göra för att lösa det. Är det någon annan som råkat ut för det?


Svara

Sv: cursor hoppar över poster!?

Postades av 2003-07-04 08:43:26 - Hobil Haidari

Jag vet nu varför den hoppar över vissa rader, enklare än vad man tror, som vanligt med andra ord.

Det kommer sig av att ett av printvärdena som jag försöker skriva ut är null varför den helt sonika struntar att skriva ut något alls för den raden.

Först trodde jag det var så illa att fetch kommandot misslyckades med en inläsning, men det kunde lätt kontrolleras genom att skriva ut variabeln @@FETCH_STATUS direkt efter FETCH INTO satsen, den ska visa 0 om det gick bra att läsa in nästa post till variablerna, annars får man ett värde mindre än 0 (-1 elr -2)


Svara

Sv: cursor hoppar över poster!?

Postades av 2003-07-04 14:33:13 - Christoffer Hedgate

> Det kommer sig av att ett av printvärdena som jag försöker skriva ut är null varför den helt sonika struntar att skriva ut något alls för den raden.

Nja, den struntar inte i att skriva ut (därav de tomma raderna), det är bara det att den skriver bara ut ingenting. NULL konkatenerat med något blir NULL.

Varför använder du en cursor? Jag antar att den egentligen gör mer än vad du visar här, att detta bara var någon exempelkod eller något. Annars förstås jag inte alls varför du använder en cursor.


Svara

Sv: cursor hoppar över poster!?

Postades av 2003-07-07 10:47:20 - Hobil Haidari

ah ok, gammal hederlig matematik, null * something= null, nice...

Jodå, den gör lite mer än exemplet, den tar reda på en lista av felaktiga adresser och sedan beroende på vissa variabler så räknar den fram värden som sedan matas in dbn via ett par andra storeprocedures... men scriptet var för bökigt att ta med här så jag klippte hjälpens exempel och modifierade det lite för att beskriva mitt problem.

Att använda cursor modellen är ofta för mig ett lätt sätt att hantera lite mer komplicerade uppgifter (itereringar är mycket trevliga), försöker dock lära mig mer SQL, och förvånas hela tiden hur mycket som går att åstadkomma i språket, mitt nästa bokinköp ska bli Joe Celkos grymma tips och tricks bok, kanske man då kan nå gurustadiet, hehe (skämt åsido).


Svara

Sv: cursor hoppar över poster!?

Postades av 2003-07-07 14:46:39 - Christoffer Hedgate

> ah ok, gammal hederlig matematik, null * something= null, nice...

Ja, matematik vet jag inte, ett okänt värde som på något vis kombineras med ett känt värde måste ju resultera i ett okänt värde. Dock ej samma okända värde som man började med, även om det skulle kunna vara det.. hmm nu blir det lulligt. :)
Fast det är ju förstås matematik... Menade mest att det inte är på så särskilt hög nivå.

> Jodå, den gör lite mer än exemplet, den tar reda på en lista av felaktiga adresser och sedan beroende på vissa variabler så räknar den fram värden som sedan matas in dbn via ett par andra storeprocedures... men scriptet var för bökigt att ta med här så jag klippte hjälpens exempel och modifierade det lite för att beskriva mitt problem.

Nja, jag är fortfarande tveksam till varför en cursor ska användas. Kolla bl a Evil T-SQL och Evil T-SQL II på sql.nu (http://www.sql.nu/).

> Att använda cursor modellen är ofta för mig ett lätt sätt att hantera lite mer komplicerade uppgifter (itereringar är mycket trevliga)

Nej, jag tycker precis tvärtom. Itereringar är något programmerare vana vid procedurell programmering har med sig när de ska använda databaser, istället för att använda mängdbaserad logik i SQL.

> mitt nästa bokinköp ska bli Joe Celkos grymma tips och tricks bok

Inte säker på vilken av hans böcker du menar, men jag rekommenderar SQL for Smarties, det är den mest användbara av hans böcker.


Svara

Sv: cursor hoppar över poster!?

Postades av 2003-07-07 17:19:26 - Hobil Haidari

Jo det förstås, det kan mycket väl stämma i mitt fall, har en TURBO Pascal bakgrund och mycket mer procedurell programmering än så blir det nog inte, även om Object Pascal faktiskt var nog så objektorienterad på sin tid... men databaser och mängder.... mmm det är lite annorlunda, varför man ibland fastnar i vinkelvolten och gör logiska dubbelknutar!?

Och då kommer den gamle hederlige proceduren fram, steg för steg, enkelt och snyggt uppställt... prestanda och coolhets faktorer står då väldigt lågt i kurs hehe


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 614
27 953
271 709
468
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies