存储过程动态新建表的问题
这是个带参数输入的创建表名为输入参数的存储过程,
列写要新建的列时出问题,但改下属性就又好了,不知道是不是有什么规则了但不应该对这个有限制把
在调用该存储过程的时候报各种错:
消息 102,级别 15,状态 1,第 1 行
“(”附近有语法错误。
或:
消息 102,级别 15,状态 1,第 1 行
“5”附近有语法错误。(nvarchar(50)里面的5应该是)
存储过程代码:
use MYCSDN
go
ALTER procedure carded
@ID nvarchar(50)
as
BEGIN
Declare @tableName As nvarchar(50)
Declare @Sql as nvarchar(100)
Set @tableName = '['+@ID+']'
Set @Sql = 'Create Table '+ @tableName +'(ID int identity(1,1) primary key not null,Writer nvarchar(50),Rriter nvarchar(60))'
EXEC SP_EXECUTESQL @Sql,N'@tableName VARCHAR(100) OUTPUT',@tableName OUTPUT
END
GO
调用代码:
use mycsdn
go
EXEC carded @ID='abcdef'
go
大家看看是怎么回事了?
[解决办法]
EXEC SP_EXECUTESQL @Sql,N'@tableName VARCHAR(100) OUTPUT',@tableName OUTPUT
这句不对
EXEC SP_EXECUTESQL @Sql 就可以了