提示‘1’附近有错误,请帮忙仔细看下还有哪里错误?非常急

来源:百度知道 编辑:UC知道 时间:2024/06/26 01:52:43
CREATE PROCEDURE PublicTurePage (
@title varchar(50),--文章标题
@content varchar(200),--文章内容
@type int,--搜索类型
@TBName nvarchar(100)='mohu',--表名
@PageSize int=10,--每页行数
@CurPage int=1,--第几页
@KeyField nvarchar(100)='t_id',--关键字
@Fields varchar(500)='t_id,t_title,t_content'--查询的列名

)

as

if @PageSize <=0 or @CurPage <0
begin
raiserror('当前页数和每页的记录数都必须大于零!',11,1)
return
end

DECLARE @Str nVARCHAR(4000)
--按标题搜索
if (@type=1)
begin

set @Str='SELECT TOP '+str(@PageSize)+'' +@Fields+ ' from ' +@TBName+ ' where ' +@KeyField+ '
not in (select top ' + str(@PageSize*(@CurPage-1)) +'' +@KeyField+ ' from ' +@TBName+ '
) and t_title like '+@title

end
--按正文搜索
if (@type=2)
begin
set @Str='SELECT TOP'

给你测试了.

exec PublicTurePage '%1%','%asd%',1
exec PublicTurePage '%1%','%asd%',2

都不能成功...为什么呢?因为你两条SQL语句全错.
现在能说的是.你定义现在没有问题了.
这个我没有你的数据库不好测试....那就说一下明显的错.

一.--按标题搜索部分
你的最后一句.
exec PublicTurePage '%1%','%asd%',1

1.'%1%'=title like 后面字符是不是应该加引号引起来?? 你这个调进去了是没有加引号的.

2.'+str(@PageSize)+'' +@Fields+ 这两个变量之间没有空格.虽然测试不报错.但你还是得按标准写.有时候开发语言和数据库之间还是存在分歧的.
修改以上两点应该没问题了.

二.--按正文搜索部分

1.明显的4个"(",5个")", 能不错么?
2.同按标题搜索部分问题一.引号的问题..
去查查关于引号的转义问题即可解决.

累呀..研究你这个问题用了40分钟..嘿嘿