Avatar billede kelo Nybegynder
06. april 2001 - 14:21 Der er 11 kommentarer og
1 løsning

Stored Procedures med Cursor iblandet

Her er min kode:

CREATE PROCEDURE spOpretAxaptaBrugere
AS
BEGIN
    DECLARE crs_BrugerTilOprettelse CURSOR
    FOR
    SELECT brugerid, e.pers_id AS PersID, eu.afd AS Afd, e.AxaptaID as AxaptaID
    FROM vwElevQueueAxaptaTildeling vw
    INNER JOIN Elevstam e ON e.bid = vw.BrugerID
    INNER JOIN Elevudd eu ON e.pers_id = eu.pers_id
FOR UPDATE

OPEN crs_BrugerTilOprettelse -- Her Kommer fejlen se fejl beskriv. efter kode!
    DECLARE @BrugerID varchar(12)
    DECLARE @Pers_ID int
    DECLARE @Afd Varchar(50)
    DECLARE @AxaptaID Nvarchar(4)

FETCH NEXT FROM crs_BrugerTilOprettelse INTO @BrugerID, @Pers_ID, @Afd, @AxaptaID

WHILE @@FETCH_STATUS = 0 BEGIN
    PRINT @Pers_ID
    FETCH NEXT FROM crs_BrugerTilOprettelse
    INTO @BrugerID, @Pers_ID, @Afd, @AxaptaID
END
CLOSE crs_BrugerTilOprettelse

===============
Server: Msg 170, Level 15, State 1, Procedure spOpretAxaptaBrugere, Line 26
Line 26: Incorrect syntax near \'crs_BrugerTilOprettelse\'.
===============

Kan man ikke gøre som jeg har gjort??
Avatar billede slash Nybegynder
06. april 2001 - 14:31 #1
skal man ikke ved din curserdef. angive for browse... mener dette skal bruges når du vil update..

DECLARE crs_BrugerTilOprettelse CURSOR
    FOR BROWSE
   
men er sgu ikke sikker
Avatar billede kelo Nybegynder
06. april 2001 - 14:34 #2
Nope virker ikke, men jeg er heller ikke sikker på update =)). Jeg går over til at bruge Browse, men der er stadig fejl i koden
Avatar billede slash Nybegynder
06. april 2001 - 14:36 #3
det der med curors i sql... en lidt skummel ting synes jeg.... brugte det engang og fik de mest underlige fejl... men dette fandt jeg ud af var fordi cursoren simpelt hen blev sluppet fri før jeg var færig med mine transaktioner! Du kan anvende HOLDLOCK til at undgå at cursoren slippes for tidlig! Men hvor i din kode du kan placere den er op til dig ;-)
Avatar billede kelo Nybegynder
06. april 2001 - 14:37 #4
Hmm har aldrig hørt om den funktion, giv mig lige en eksemple på den. F.eks på min kode *smiler*
Avatar billede slash Nybegynder
06. april 2001 - 14:44 #5
hmm... tænker lige på en ting.... HOLDLOCK er nok mest optimal ved select, for når holdlock anvendes låses der for update, delete..

prøv lige at ændre dette ved din declare:
BEGIN
    DECLARE CURSOR crs_BrugerTilOprettelse
   
    SELECT brugerid, e.pers_id AS PersID, eu.afd AS Afd, e.AxaptaID as AxaptaID
    FROM vwElevQueueAxaptaTildeling vw
    INNER JOIN Elevstam e ON e.bid = vw.BrugerID
    INNER JOIN Elevudd eu ON e.pers_id = eu.pers_id
FOR BROSWE   

For brose specificerer så hut jeg visker at vi taler om updates!
Avatar billede slash Nybegynder
06. april 2001 - 14:45 #6
stavsefejl :

BEGIN
    DECLARE CURSOR crs_BrugerTilOprettelse
   
    SELECT brugerid, e.pers_id AS PersID, eu.afd AS Afd, e.AxaptaID as AxaptaID
    FROM vwElevQueueAxaptaTildeling vw
    INNER JOIN Elevstam e ON e.bid = vw.BrugerID
    INNER JOIN Elevudd eu ON e.pers_id = eu.pers_id
FOR BROWSE   

Avatar billede slash Nybegynder
06. april 2001 - 14:46 #7
skynd dig lidt med at teste... om 10 min. er jeg netløs i hele weekenden ;-(

Avatar billede kelo Nybegynder
06. april 2001 - 14:51 #8
Dur ikke syntaksen for Cursor er:

DECLARE <cursor name> [insensitive] [scroll] CURSOR
FOR <SELECT_statment>
[for <read only | update [of <column list>] >]
Avatar billede slash Nybegynder
06. april 2001 - 14:52 #9
nå, men jeg lægger lige et svar hvis det sidste opkast virkede :-(=)
Avatar billede kelo Nybegynder
06. april 2001 - 14:55 #10
Desværre slash det duede sgu ikke......Jeg river mig snart i hovedet.

Men hvis der er en hjerne derude der har en anden algorithme for at løse mit problem.

Jeg har et view hvori der ligger en kø af brugere som skal oprettes. Mit problem ligger i at få fat i værdierne fra den første SELECT sætning, så jeg kan teste videre på dem.

Hvordan forøger jeg points på spgmålet?
Avatar billede kelo Nybegynder
06. april 2001 - 15:49 #11
Jeg har fundet ud af at det er min:

WHILE @@FETCH_STATUS = 0 BEGIN
    PRINT @Pers_ID
der skaber problemerne..Hmm hvordan får jeg så den skide løkke til at fortsætte indtil der ikke er flere i køen fra view?
Avatar billede kelo Nybegynder
06. april 2001 - 16:10 #12
Ehhh Slash =)))) Jeg fandt fejlen. Jeg mangler en slut END ved While Sætningen hehe. Og forresten skal fetch_status staves med lille.

Query Analyzer skriver at den er succesfull sætningen nu, men der kommer ingen data ud....Hmm et problem til en kedelig mandag morgen tror jeg.
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