帮忙检查存储过程

来源:百度知道 编辑:UC知道 时间:2024/06/14 07:46:13
此存储过程单独可以执行成功,可是合到程序里用ErrprPage页捕捉时却显示:关键字 'where' 附近有语法错误。

麻烦大家检查下:
ALTER PROCEDURE [dbo].[uspGetBillDispenses]
(
@receiveBillPerson VARCHAR(50), --领票人姓名
@billType VARCHAR(50), --票据类型
@pageIndex INT, --待读取的页索引
@pageSize INT, --每页显示的记录数
@recordCount INT OUTPUT --总记录数
)
AS
BEGIN
declare @str VARCHAR(1000)
select @recordCount=count(*) from BillMgt_BillDispense;--总记录数
set @str='select row_number()
Over (order by ReceiveBillPerson) as row,
PKID,BillType,BillStartCode,BillEndCode,ReceiveBillPerson,AcceptStation,ReceiveBillTime,ReleasePerson from BillMgt_BillDispense
where ReceiveBillPerson LIKE ''%'+ @receiveBillPerson + '%''';
IF @billType <> ''
set @str=@str+' and BillType='''+@billType+''''

1、可能是错在 【from ('+@str+')】这个上面了,【('+@str+')】这个应该是个子查询吧,我经常遇到子查询的时候如果子查询没有起名字,就会报错。
2、改成下面这样试试:【from ('+@str+') as temp】

---
以上,希望对你有所帮助。

where row between ('+cast(@pageIndex as char)+'- 1) * '+cast(@PageSize as char)+'+ 1 and '+cast(@pageIndex as char)+'*'+cast(@PageSize as char);--分页
可能是这里错了 2楼说的那个地方 我试过了 没有错
你自己找把 就是这里了
先把变量去掉 换自己写上去 能用了 在把变量一个一个换上去
排错也是学习的一部分

where ReceiveBillPerson LIKE ''%'+ @receiveBillPerson + '%''';

程序调用的时候 @receiveBillPerson 是字符串

like 后面应该在程序里传过来

改成 like @receiveBillPerson (程序里给值)

把 这个动态SQL提出来测下 看看悄胡''号对吗?