ALTER PROCEDURE dbo.Table_GetFullPagedList
(
@tablename varchar(50)
@pageindex int,
@maximumrows int,
@orderby varchar(299);
)
AS
DECLARE @startrowindex int;
SET @startrowindex = (@pageindex * @maximumrows) + 1;
declare @query varchar(4000)
set @query =
'WITH TempTable AS ' +
'(SELECT ROW_NUMBER() OVER (ORDER BY ' + @orderby + ') as RowNumber, * FROM dbo.' + @tablename
+ ') SELECT * ' +
'FROM TempTable ' +
' WHERE RowNumber BETWEEN ' + cast(@startrowindex as varchar(11)) + ' AND ' +
caset(@startrowindex+@maximumrows-1 as varchar(11))
exec (@query)
Frågan#1
SqlServer 2005
Undrar om det går att skicka in ett tabellnamn och en orderby parameter och dynamiskt ta ut från den önskade tabellen.
I nedan SP så skall alltså @tablename och @orderby ändras så att de på något sätt fungerar mot en av mig vald tabell. Är det möjligt???
ALTER PROCEDURE dbo.Table_GetFullPagedList
(
@tablename varchar(50)
@pageindex int,
@maximumrows int,
@orderby int --Eller varchar
)
AS
DECLARE @startrowindex int;
SET @startrowindex = (@pageindex * @maximumrows) + 1;
WITH TempTable AS
(
SELECT ROW_NUMBER() OVER (ORDER BY @orderby) as RowNumber, * FROM dbo.@tablename
)
SELECT *
FROM TempTable
WHERE RowNumber BETWEEN @startrowindex AND @startrowindex+@maximumrows-1;