Stored procedure

martedì 20 gennaio 2009 - 11.11

paovanm Profilo | Junior Member

Ciao a tutti,
sto cercando di creare una semplicissima stored procedure che mi ritorni righe (se non vuote) di tabelle (di un database SQL 2005) che inserisco come parametro, ma non riesco!!
Il mio script è:
"CREATE PROCEDURE [dbo].[spGetEngineComp_EngID] @engID int, @table varchar(20)
AS
BEGIN
IF (SELECT COUNT(*) FROM [@table] WHERE [engID] = @engID) > 0
BEGIN
SELECT * FROM [@table] WHERE [engID] = @engID
END
ELSE
PRINT 'La matricola immessa non è presente nella tabella'
END"

e quando cerco di eseguirla

EXECUTE spGetEngineComp_EngID
@engID = 10,
@table = 'ProjectInfo'

ma ho il seguente errore: Messaggio 102, livello 15, stato 1, riga 3
Sintassi non corretta in prossimità di '@table'.


Prima lavoravo con un DB sql 2000 e funzionavano...

AIUTO
Michela

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao

>EXECUTE spGetEngineComp_EngID
>@engID = 10,
>@table = 'ProjectInfo'
>
>ma ho il seguente errore: Messaggio 102, livello 15, stato 1,
>riga 3
>Sintassi non corretta in prossimità di '@table'.
Certo, perchè non puoi parametrizzare il nome delle tabelle in quel modo

>Prima lavoravo con un DB sql 2000 e funzionavano..
mmmh.. no

Se vuoi ottenere il comando parametrizzando il nome tabella, devi ricorrere a sql dinamico.
Leggi attentamente questo articolo importantissimo:
http://www.sommarskog.se/dynamic_sql.html
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

paovanm Profilo | Junior Member

Grazie mille,
studio e poi mi rifaccio viva!
Michela
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5