у меня есть процедура:Почему я не могу создать таблицу с этим динамическим SQL?
ALTER PROCEDURE SP_CREATETABLE
(
@newTableName NVARCHAR(200)
)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)
SELECT @sql = 'create table @tableName (id int identity(1,1) primary key)'
PRINT @sql
EXEC sp_executesql @sql, N'@tableName nvarchar(200)', @newTableName
END
Когда я пытаюсь выполнить это:
EXEC SP_CREATETABLE 'NEWTABLENAME';
Я получаю эту ошибку:
Msg 102, Level 15, State 1, Line 12
Incorrect syntax near '@tableName'.
Side Примечание: вы должны ** ** не использовать 'sp_' префикс для хранимых процедур. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –