/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MS Sql 2k] Tabelnavn som parameter i SP
Fra : Jesper Stocholm


Dato : 12-07-05 14:13

Er det muligt at medtage tabelnavnet som parameter i en stored procedure?

.... altså så man kan lave noget a'la

CREATE PROCEDURE dbo.JSTTemp
(
@tableName varchar(50)
)
AS

select * from @tableName
GO



Jeg er klar over, at der så ikke vil blive kompileret en query-plan, men er
ovenstående overhovedet muligt?



--
Jesper Stocholm
http://stocholm.dk

 
 
Peter Lykkegaard (12-07-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 12-07-05 14:33

"Jesper Stocholm" wrote
> Er det muligt at medtage tabelnavnet som parameter i en stored procedure?
>
> ... altså så man kan lave noget a'la
>
> CREATE PROCEDURE dbo.JSTTemp
> (
> @tableName varchar(50)
> )
> AS
>
> select * from @tableName
> GO
>
Kik på sp_executesql i BOL


CREATE PROCEDURE dbo.JSTTemp
(
@tableName varchar(50)
)
AS
execute sp_executesql
N'select * from ' + @tableName
GO

- Peter





Jesper Stocholm (12-07-2005)
Kommentar
Fra : Jesper Stocholm


Dato : 12-07-05 14:49

"Peter Lykkegaard" <peter.aghl@gmail.com> wrote in
news:42d3c6aa$0$54959$edfadb0f@dread16.news.tele.dk:

> "Jesper Stocholm" wrote
>> Er det muligt at medtage tabelnavnet som parameter i en stored
>> procedure?
>>
>> ... altså så man kan lave noget a'la
>>
>> CREATE PROCEDURE dbo.JSTTemp
>> (
>> @tableName varchar(50)
>> )
>> AS
>>
>> select * from @tableName
>> GO
>>
> Kik på sp_executesql i BOL
>
>
> CREATE PROCEDURE dbo.JSTTemp
> (
> @tableName varchar(50)
> )
> AS
> execute sp_executesql
> N'select * from ' + @tableName
> GO

Kan du få ovenstående til at kompilere?

Hvis jeg laver det som

CREATE PROCEDURE dbo.JSTTemp
(
@jobID   int,
@tableName varchar(50)
)
AS
execute sp_executesql N'select * from systypes'
GO

.... så virker det, men når jeg forsøger at få tableName med, så brokker
den sig over '+'

Ovenstående skulle gerne resultere i en kommando som

SELECT <jobid>, * from <mytable>



--
Jesper Stocholm
http://stocholm.dk

Jesper Stocholm (12-07-2005)
Kommentar
Fra : Jesper Stocholm


Dato : 12-07-05 14:58

Efter lidt makkeri fik jeg det til at virke med koden

CREATE PROCEDURE dbo.JSTTemp
(
@jobID   int,
@tableName varchar(50)
)
AS

DECLARE @sqlCommand nvarchar(200)
SET @sqlCommand =
'select ' + CAST(@jobID as varchar(10) ) + 'As JobID,* from ' + @tableName

execute sp_executesql @sqlCommand
GO




--
Jesper Stocholm
http://stocholm.dk

Peter Lykkegaard (12-07-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 12-07-05 15:32

"Jesper Stocholm" wrote

> men når jeg forsøger at få tableName med, så brokker
> den sig over '+'
>
sp_executesql kræver en variabel af typen nvarchar
Løsningen er fx at lave det som du selv er nået frem til

- Peter



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste