存储过程错误.错误403:对数据类型而言运算符无效,运算符为add,类型为bit.

cantops 2006-02-17 10:30:59
CREATE PROCEDURE UP_Roles_Update
@RoleId int, --唯一标识
@Name nvarchar(40), --角色名称
@Operation nvarchar(200),--角色操作权限
@Description nvarchar(200),--描述
@Validity bit , --有效性
@IsUpPower bit --更新方法(1为更新权利,2为更新其他)
AS
declare @strSQL varchar(600)
if @IsUpPower!=1
begin
set @strSQL='UPDATE Roles SET
[Name] = '+@Name+',[Description] = '+@Description+',[Validity] = '+@Validity+' WHERE [RoleId] = '+@RoleId
end
GO

为什么这段存储过程会报这个错误呢?根据错误提示我把,[Validity] = '+@Validity+' 暂时去掉就不报错了, 小弟没学过存储过程,现在临时要用,还请大虾们赐教
...全文
429 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dulei115 2006-02-17
  • 打赏
  • 举报
回复
象楼主的这条可以直接运行的
UPDATE Roles
SET [Name] = @Name,[Description] = @Description,[Validity] = @Validity
WHERE [RoleId] = @RoleId
cantops 2006-02-17
  • 打赏
  • 举报
回复
问题已解决~^0^
dulei115 2006-02-17
  • 打赏
  • 举报
回复
差引号和数据类型转换
set @strSQL='UPDATE Roles SET
[Name] = '''+@Name+''',[Description] = '''+@Description+''',[Validity] = '+cast(@Validity as varchar(1))+' WHERE [RoleId] = '+cast(@RoleId as varchar(10))
dulei115 2006-02-17
  • 打赏
  • 举报
回复
差引号和数据类型转换
set @strSQL='UPDATE Roles SET
[Name] = '''+@Name+''',[Description] = '''+@Description+''',[Validity] = '+cast(@Validity as varchar(1))+' WHERE [RoleId] = '+cast(@RoleId as varchar(10)
-狙击手- 2006-02-17
  • 打赏
  • 举报
回复
--try

begin
set @strSQL='UPDATE Roles SET
[Name] = '+@Name+',[Description] = '+@Description+',[Validity] = '+ convert(varchar(10),@Validity)' WHERE [RoleId] = '+@RoleId
end
dulei115 2006-02-17
  • 打赏
  • 举报
回复
好像是差引号
set @strSQL='UPDATE Roles SET
[Name] = '''+@Name+''',[Description] = '''+@Description+''',[Validity] = '+@Validity+' WHERE [RoleId] = '+@RoleId

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧