Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer dynamic sql in de declaratie van een cursor te gebruiken, maar helaas nog zonder sucses. Kan iemand mij misschien hierbij bij helpen.

Het volgende heb ik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER PROCEDURE [dbo].[sp_DatabaseFiles_New]

    @DatabaseName       varchar(100)

AS

    DECLARE     @SQL            varchar(max)
    DECLARE     @DatabaseID     int
    DECLARE     @FileID         int

    SELECT      @DatabaseID = DatabaseID
    FROM        dbo.Databases 
    WHERE       Name = @DatabaseName

    SELECT      @SQL    =   
                'SELECT     File_ID
                 FROM       ' + CAST(@DatabaseName AS sysname) + '.sys.database_files'

    DECLARE     cDatabaseFile CURSOR FOR
        EXEC (@SQL)

    OPEN cDatabaseFile
        FETCH NEXT FROM cDatabaseFile INTO @FileID
        WHILE @@FETCH_STATUS = 0
        BEGIN

            PRINT       @FileID
            FETCH NEXT FROM cDatabaseFile INTO @FileID
        END
    CLOSE cDatabaseFile
    DEALLOCATE cDatabaseFile


Ik krijg dan de volgende fout:
Msg 156, Level 15, State 1, Procedure sp_DatabaseFiles_New, Line 22
Incorrect syntax near the keyword 'EXEC'.

[ Voor 7% gewijzigd door Verwijderd op 06-04-2009 21:08 ]


Acties:
  • 0 Henk 'm!

  • Fiander
  • Registratie: Februari 2001
  • Laatst online: 28-05 12:35
probeer dit eens....

SELECT @SQL =
' DECLARE cDatabaseFile CURSOR FOR
SELECT File_ID
FROM ' + CAST(@DatabaseName AS sysname) + '.sys.database_files'

EXEC (@SQL)


hoewel ik cursors erg smerig blijf vinden.
en waarom zou je uberhaubt een cursor nodig hebben voor een lijst met fileids ?

Deze sig is een manueel virus!! Als je dit leest heb je het. Mail dit bericht naar iedereen die je kent, en verwijder alle bestanden van je computer.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het werkt ! Dat ik dit niet zelf heb bedacht :@ Te veel in SQL gezeten denk vandaag.

Valt wel mee hoe smerig een cursor is je moet er alleen wel mee om weten te gaan. Ik ga er hierna uiteraard nog meer mee dan dan alleen de fileids ;)

Thnx a lot iig.