注册 登录
编程论坛 SQL Server论坛

存储过程:将 varchar 值 'select ' 转换为数据类型为 int 的列时发生语法错误怎么处理

kira007 发布于 2010-08-18 13:24, 1597 次点击
CREATE PROCEDURE GetOrderBy
@ParentID int,
@Resultval int output,
@TableName varchar(200)
 AS
    begin
    declare @strSQL nvarchar(1000)
    SET  @strSQL =  ‘select ’+@Resultval+‘ = count(*)  from  ['+@TableName+']  where  ParentID =’+ @ParentID
    exec(@strSQL)
    end
GO
运行提示:将 varchar 值 'select ' 转换为数据类型为 int 的列时发生语法错误

我把 SET  @strSQL =  ‘select ’+@Resultval+‘ = count(*)  from  ['+@TableName+']  where  ParentID =’+ @ParentID 改为
SET  @strSQL =  N'select @Resultval = count(*)  from  ['+@TableName+']  where  ParentID = @ParentID'
却又提示 要声明 @Resultval
这要怎么处理????
3 回复
#2
aei1352010-08-18 17:59
你的引号有问题
CREATE PROCEDURE GetOrderBy
@ParentID int,
@Resultval int output,
@TableName varchar(200)
AS
    begin
    declare @strSQL nvarchar(1000)
    SET  @strSQL ='select '+@Resultval+' = count(*)  from  ['+@TableName+']  where  ParentID ='+ @ParentID
    exec(@strSQL)
    end
#3
kira0072010-08-19 09:25
不是引号问题,我用的是英文的引号。

#4
luanyunfeng2010-08-20 10:37
你把@Resultval改成convert(varchar(8),@Resultval)
试试
1