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