2010-06-08 7 views
0

Je veux écrire une procédure stockée dans Visual Studio qui en tant que paramètre reçoit le nom du projet et s'exécute dans la base de données TT et copie les données de TT.dbo.LCTemp (où le LC est le nom de le projet a été reçu en tant que paramètre) dans la table "TT.dbo.Points". les deux tables ont 3 colonnes: PT_ID, et Projectname DateCreatedprocédure stockée SQL dans Visual Studio 2008

Je pense que je l'ai écrit mal, la voici:

ALTER PROCEDURE dbo.FromTmpToRegular 
    @project varchar(10) 
AS 
BEGIN 
    declare @ptID varchar(20) 
    declare @table varchar(20) 

    set @table = 'TT.dbo.' + @project + 'Temp' 
    set @ptID = @table + '.PT_ID' 

    Insert into TT.dbo.Points Select * from [@table] where [@ptID] Not in(Select PT_ID from TT.dbo.Points) 
END 

Toute idée ce que je fait de mal?

Répondre

1

Essayez d'utiliser

EXEC ('Insert into TT.dbo.Points Select * from ' + @table + ' where ' + @ptID ' Not in(Select PT_ID from TT.dbo.Points)'); 

Ou utiliser des paramètres comme celui-ci

Declare @SQL nVarChar(1000) --N.B. string must be unicode for sp_executesql 
SELECT @SQL = 'SELECT * FROM pubs.DBO.Authors WHERE au_lname = @AuthorName' 

Exec sp_executesql @SQL, N'@AuthorName nVarChar(50)', @AuthorName = 'white' 
+0

La première réponse a fonctionné pour moi, je vous remercie beaucoup! :) – Greg

Questions connexes