Avatar billede hkramer Nybegynder
09. august 2001 - 15:06 Der er 5 kommentarer og
1 løsning

Stored procedure scoperegler i MSSQL 2000

Jeg har en rekursiv stored procedure spPublishCell:
---------------------------------------
Declare @cellID
Declare Cells Cursor For
    Select ID from tbl_Cells where tbl_Cells.parentID = @ID
Open Cells
Fetch Next From Cells
Into @cellID

While (@@FETCH_STATUS = 0)
Begin
    Exec spPublishCell @cellID

    Fetch Next From Cells
    Into @cellID
End

Close Cells
Deallocate Cells
------------------------------------------

Mit problem er omkring cursoren Cells. Det virker som om den ikke kommer ud af scope når procedure kaldes anden gang.
Hvad gør jeg ??

</hkramer>
Avatar billede kelo Nybegynder
09. august 2001 - 15:10 #1
Prøv det her:

While (@@FETCH_STATUS = 0)
Begin
    Fetch Next From Cells
    Into @cellID
End

Close Cells
Deallocate Cells

For mig lader det som om den aldrig kommer ud fra den først record, da du kalder den samme sp hver gang
Avatar billede hkramer Nybegynder
09. august 2001 - 15:18 #2
@ID bliver sendt med som parameter, og spPublishCell kaldes med en ny @ID hver gang.
Problemet er ikke at den ikke kommer ud, men at Cells ikke er ude af scope anden den kaldes.

</hkramer>
Avatar billede kelo Nybegynder
09. august 2001 - 15:34 #3
Sådan som jeg læser programmet:

Første gang:
@ID = 1

while () = true
{
  kald sp igen
  derefter hent en id
}

Hvad med at kalde din sp efter næste fetch?
Avatar billede kelo Nybegynder
09. august 2001 - 15:35 #4
Som mig ser der ud som om den køre rundt med den først @id den for ind
Avatar billede hkramer Nybegynder
09. august 2001 - 15:37 #5
Jeg har en fetch inden

Fetch Next From Cells
Into @cellID

Det er ikke det der er problemet. Cells er stadig allokeret når spPublishCell kaldes anden gang !

</hkramer>
Avatar billede hkramer Nybegynder
10. august 2001 - 14:47 #6
Jeg har erfaret at Microsoft faktisk indrømmer, at der er en fejl med hensyn til scope og stored procedures. 2 cursorer med samme navn inden for samme kørsel giver problemer.

</hkramer>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester