坑爹啊!!!!过程或函数需要参数 '@Tables',但未提供该参数。

aspnet30 2011-09-15 05:47:58
存储过程:


/***************************************************************


参数说明:

1.Tables :表名称,视图,不带dbo.

2.PrimaryKey :主关键字

3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc (Desc Asc前必须加空格)

4.CurrentPage :当前页码

5.PageSize :分页尺寸

6.Fields: 字段名

7.Filter :过滤语句,不带Where

8.Group :Group语句,不带Group By

***************************************************************/

(

@Tables varchar(200)=Null,
@Fields varchar(1000) = NULL,
@CurrentPage int = 1,
@PageSize int = 20,
@Filter varchar(1000) = NULL,
@Sort varchar(200) = NULL,
@Group varchar(200) = NULL

)

AS
BEGIN

SET NOCOUNT ON

/*默认排序*/

SET @Sort = RTRIM(LTRIM(@Sort))
IF @Fields IS NULL OR @Fields = ''

SET @Fields = '*'

DECLARE @SortTable varchar(100)

DECLARE @SortName varchar(100)

DECLARE @SQL1 varchar(4000)

/*设定排序语句.*/

DECLARE @strPageSize varchar(50)

DECLARE @strStartRow varchar(50),@strEndRow varchar(50)

DECLARE @strFilter varchar(1000)

DECLARE @strGroup varchar(1000)

/*默认当前页*/

IF @CurrentPage < 1

SET @CurrentPage = 1

/*设置分页参数.*/

SET @strPageSize = CAST(@PageSize AS varchar(50))

SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(50))

SET @strEndRow = CAST((@CurrentPage*@PageSize) AS varchar(50))

/*筛选以及分组语句.*/

IF @Filter IS NOT NULL AND @Filter != ''

BEGIN

SET @strFilter = ' Where ' + @Filter + ' '

END

ELSE

BEGIN

SET @strFilter = ''

END

IF @Group IS NOT NULL AND @Group != ''

BEGIN

SET @strGroup = ' GROUP BY ' + @Group + ' '

END

ELSE

BEGIN

SET @strGroup = ''

END

/*执行查询语句*/

SET @SQL1 ='select * from (Select *,ROW_NUMBER() OVER(Order By ArticleID) as row FROM ' + @Tables + ') a where row between '+@strStartRow+' and '+@strEndRow

--PRINT (@SQL1)

EXEC (@SQL1)



执行代码:


exec sp_executesql N'P_GetListByPage',N'@Tables varchar(200),@Fields varchar(1000),@CurrentPage int,@PageSize int,@Filter varchar(1000),@Sort varchar(200),@Group varchar(200)',@Tables=N'Article',@Fields='',@CurrentPage=1,@PageSize=20,@Filter='',@Sort='ArticleID DESC',@Group=''




我明明提供了“@Table”,但就是一直报未提供该参数
...全文
436 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kenliu2008 2011-09-16
  • 打赏
  • 举报
回复
commandType 是不是设置成了Text了?执行存储过程应该用commandType="StoredProcedure"
aspnet30 2011-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jinfengyiye 的回复:]

不用你这样调用吧。你只要
exec P_GetListByPage @Tables=N'Article',@Fields='',@CurrentPage=1,@PageSize=20,@Filter='',@Sort='ArticleID DESC',@Group=''
这样应该差不多了。
[/Quote]

不是我要这样调用的,呵,我是用orm做的,生成的sql语句是这样的
唐诗三百首 2011-09-15
  • 打赏
  • 举报
回复
1楼正解,一定要用exec sp_executesql的话语法如下.

exec sp_executesql N'P_GetListByPage @Tables,@Fields,@CurrentPage,@PageSize,@Filter,@Sort,@Group',N'@Tables varchar(200),@Fields varchar(1000),@CurrentPage int,@PageSize int,@Filter varchar(1000),@Sort varchar(200),@Group varchar(200)',@Tables=N'Article',@Fields='',@CurrentPage=1,@PageSize=20,@Filter='',@Sort='ArticleID DESC',@Group=''
xxooxxoo 2011-09-15
  • 打赏
  • 举报
回复
字符串前建议加N
NBDBA 2011-09-15
  • 打赏
  • 举报
回复
执行代码

exec P_GetListByPage @Tables=N'Article',@Fields='',@CurrentPage=1,@PageSize=20,@Filter='',@Sort='ArticleID DESC',@Group=''


gw6328 2011-09-15
  • 打赏
  • 举报
回复
不用你这样调用吧。你只要
exec P_GetListByPage @Tables=N'Article',@Fields='',@CurrentPage=1,@PageSize=20,@Filter='',@Sort='ArticleID DESC',@Group=''
这样应该差不多了。

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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