关于存储进程的一个小题目
这次消息界面显示的错误是 (1 行受影响) 消息 102,级别 15,状态 1,第 5 行 '=' 附近有语法错误。 这是咋回事??我一看select出来的语句。。。 SELECT DISTINCT TOP 10 dbo.Users.id, dbo.Users.name, dbo.Users.nickname,dbo.Users.xuehao FROM dbo.Myskills INNER JOIN dbo.Skills ON dbo.Myskills.sid = dbo.Skills.id INNER JOIN dbo.Users ON dbo.Myskills.uid = dbo.Users.id where dbo.Users.isskillopened= 一到“=”这就断了。。。我以为是因为1的问题。。。 更多精彩内容:http://www.bianceng.cn/database/SQLServer/ 于是我就加上了Convert函数,准备把它变成varchar类型的。但是不行,报同样的错误。 这是咋回事。。。。我就纠结开了,我在等号前又加了个空格。。。 这次报的是另外的错误 消息 4145,级别 15,状态 1,第 5 行 在应使用条件的上下文(在 'isskillopened' 附近)中指定了非布尔类型的表达式。 这是什么错误。。以前没见过。。。百度了一些,没有和我的情况类似的。。。 我又在where后面加了个1=1.。。。 这时候,我的存储过程变成了。。 alter PROCEDURE [dbo].[selectuserbypageandsearch] @categoryid int, @sex int, @skillid int, @ishaved int, @pageindex int, @pagesize int AS DECLARE @strSQL varchar(5000) declare @whereSQL varchar(1000) set @whereSQL='where 1=1 and dbo.Users.isskillopened =1'--这里修改了一下 if @ishaved>0 set @whereSQL=@whereSQL+'and dbo.Myskills.ishaved='+ltrim(STR(@ishaved))+'' if @sex>=0 set @whereSQL =@whereSQL +' and dbo.Users.sex='+STR(@sex)+'' if @skillid>0 set @whereSQL =@whereSQL +' and dbo.Myskills.sid='+STR(@skillid)+'' if @skillid<=0 and @categoryid>=0 set @whereSQL =@whereSQL +' and dbo.Skills.categoryid='+STR(@categoryid)+'' IF @pageindex = 1 BEGIN SET @strSQL ='SELECT DISTINCT TOP '+ STR(@pagesize) + ' dbo.Users.id, dbo.Users.name, dbo.Users.nickname,dbo.Users.xuehao FROM dbo.Myskills INNER JOIN dbo.Skills ON dbo.Myskills.sid = dbo.Skills.id INNER JOIN dbo.Users ON dbo.Myskills.uid = dbo.Users.id '+ Convert(varchar,@whereSQL) + '' end ELSE BEGIN SET @strSQL ='SELECT DISTINCT TOP '+ STR(@pagesize) + ' dbo.Users.id, dbo.Users.name, dbo.Users.nickname,dbo.Users.xuehao FROM dbo.Myskills INNER JOIN dbo.Skills ON dbo.Myskills.sid = dbo.Skills.id INNER JOIN dbo.Users ON dbo.Myskills.uid = dbo.Users.id '+ Convert(varchar,@whereSQL) + ' and dbo.Users.id >(SELECT ISNULL(MAX([id]),0) FROM (SELECT TOP '+STR((@pageindex-1)*@pagesize)+' id FROM [User] '+ Convert(varchar,@whereSQL) + ' ORDER BY id) as A) ORDER by dbo.Users.id desc ' end select @strSQL EXEC(@strSQL) GO 现在的错误变成了 消息 4145,级别 15,状态 1,第 5 行 在应使用条件的上下文(在 'isskil' 附近)中指定了非布尔类型的表达式。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在SQL Server 2008中使用空间数据实现位置智能
- linq-to-sql – 你能在Linq2Sql类上实现一个接口吗?
- sql – 当我想使用数据库约束但只标记为已删除而不是删除时
- sql-server – 跟踪SQL Server最新累积更新的标准方法是什么
- sql-server – 如何在SQL Server 2017中使用SNAPSHOT_MATER
- SQL Server动态排序依据
- sql-server – 未记录的CONVERT样式 – datetime 23
- sql-server-2008 – 错误地在表上运行了更新语句
- sql-server – 更简单的方法来记住SQL Server中的跟踪标志?
- 新闻调查:发展Linux将给我国软件业带来麻烦