webForumDet fria alternativet

SELECT från dynamiskt vald tabell

2 svar · 526 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#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;
LarsGMedlem sedan dec. 200012 464 inlägg
#2
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)
DinoMedlem sedan sep. 20011 914 inlägg
#3

Finemang som vanligt. Tackar.

262 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
138 ms — hämta forumlista (db)
121 ms — hämta statistik (db)
134 ms — hämta tråd, inlägg och bilagor (db)