2010-06-08 2 views
0

Я хочу написать хранимую процедуру в визуальной студии, которая в качестве параметра получает имя проекта и запускается в базе данных TT и копирует данные из TT.dbo.LCTemp (где LC - это имя проект, полученный в качестве параметра) в таблицу «TT.dbo.Points». обе таблицы имеют 3 колонки: PT_ID, Projectname и DateCreatedsql хранимая процедура в visual studio 2008

Я думаю, что я написал это неправильно, вот оно:

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 

Любая идея, что я сделал не так?

ответ

1

Попробуйте использовать

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

Или использовать параметры как этот

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

Первый ответ работал для меня, спасибо большое! :) – Greg

Смежные вопросы