日期:2014-05-17  浏览次数:20475 次

存储过程动态新建表的问题
这是个带参数输入的创建表名为输入参数的存储过程,
列写要新建的列时出问题,但改下属性就又好了,不知道是不是有什么规则了但不应该对这个有限制把
在调用该存储过程的时候报各种错:
消息 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 就可以了