Hej,
Har lavet en Store Procedure som ser således ud:
--
EXEC('
 SELECT * FROM (
   SELECT TOP '+@x+' * FROM (
     SELECT TOP '+@x+' * FROM (
       SELECT TOP ('+@x+'+'+@y+')  '+@SelectList+'
       FROM '+@FromTableList+'
       ORDER BY '+@OrderBy+' '+@OrderAD+'
     ) AS foo ORDER BY id DESC
   ) AS bar
 ) AS baz ORDER BY id ASC
')
--
Den tager imod følgende parametre:
@SelectList  varchar(128) = '*',
@FromTableList  varchar(128) = 'ContentHistory',
@OrderBy  VarChar(64) = 'id',
@OrderAD  VarChar(4) = 'ASC',
@X   int  = 0,
@Y   int  = 10
Når jeg kører den i SQL Query Analyzer giver den følgende output:
--
Server: Msg 170, Level 15, State 1, Line 5
Line 5: Incorrect syntax near '('.
Stored Procedure: db.dbo.Get_Pages
 Return Code = 0
--
Jeg har så prøvet at fjerne de paranteser, da jeg ikke var klar over om det
var nødvendige.
Altså koden:
--
EXEC('
 SELECT * FROM (
   SELECT TOP '+@x+' * FROM (
     SELECT TOP '+@x+' * FROM (
       SELECT TOP '+@x+'+'+@y+'  '+@SelectList+'
       FROM '+@FromTableList+'
       ORDER BY '+@OrderBy+' '+@OrderAD+'
     ) AS foo ORDER BY id DESC
   ) AS bar
 ) AS baz ORDER BY id ASC
')
--
Så giver den outputtet:
--
Server: Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'FROM'.
Stored Procedure: db.dbo.Get_Pages
 Return Code = 0
--
Hvad er det der er galt?
Jeg har brugt idéen fra
http://troels.arvin.dk/db/rdbms/#select-limit-offset-mssql
Håber I kan hjælpe mig.
På forhånd tak.
Mvh
Thomas