【发布时间】:2016-04-04 01:44:59
【问题描述】:
我有一个程序:
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';
我收到此错误:
消息 102,第 15 级,状态 1,第 12 行
'@tableName' 附近的语法不正确。
【问题讨论】:
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!
标签: sql sql-server stored-procedures dynamic-sql