问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SqlServer带参存储过程的调用

发布网友 发布时间:2022-04-22 08:34

我来回答

4个回答

热心网友 时间:2022-04-11 17:16

set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ '
        from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder
else

set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ '
        from ['+ @tblName + '] '+ @strOrder--如果是第一页就执行以上代码,这样会加快执行速度

上面两个from前有全角符号,别换行改到一起就可以了
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder
else

set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName + '] '+ @strOrder--如果是第一页就执行以上代码,这样会加快执行速度追问不是那里的问题

追答你print @strSQL看看嘛
语法就是这里的问题
你最后加个exec(@strSQL)就知道了

热心网友 时间:2022-04-11 18:34

CREATE PROCEDURE pagination
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的字段名
@PageSize int = 20, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS begin
declare @strSQL varchar(5000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型

if @doCount != 0
set @strSQL = case @strWhere when ''
then 'select count(*) as Total from [' + @tblName + ']'
else 'select count(*) as Total from [' + @tblName + '] where '+@strWhere
end
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况:
else
begin
set @strTmp = case @OrderType when 0
then '>(select max'
else '<(select min'
end
set @strOrder = case @OrderType when 0
then ' order by [' + @fldName +'] asc'
else ' order by [' + @fldName +'] desc'
end

if @PageIndex = 1
set @strSQL = case @strWhere when ''
then 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName + '] '+ @strOrder
else 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder
end --如果是第一页就执行以上代码,这样会加快执行速度
else
begin--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + '])
      from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + ']
      from [' + @tblName + ']' + @strOrder + ') as tblTmp)'+ @strOrder

if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
end
end
end
GO追问你改了能用不 上面2楼说过这个存储过程不执行strSql拼凑的字符串

追答这个改动的关键是在核心代码前后加上了 begin ... end
另外是格式化代码, 部分if .. else 用case替代,以免代码的逻辑层次错误. 对于代码拼出来的sql何如并没有进行验证.
就向楼上所说. 将拼出来的sql打印出来看看就知道是否有问题了

热心网友 时间:2022-04-11 20:08

sql关键字前后要有空格要注意,以及单引号有没有成对出现等

热心网友 时间:2022-04-11 22:00

你的SP只有拼接字符串,没有执行拼接后的字符串啊
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
水利水电工程单元工程施工质量验收评定标准——土石方工程(SL 631... 关于水利水电工程项目划分的规程有哪些?划分的越细越好,感谢大家的帮 ... 水利水电工程的单位工程包括哪些工程? 尖子生学案:生物高中选修3目录 U盘传了数据怎么删除电脑记录如何清除电脑上U盘使用记录 把u盘插电脑怎么删掉记忆如何删掉电脑上插过U盘的记录 win7清除u盘记录 如何清理win7电脑u盘痕迹如何清除电脑上U盘使用记录 麦当劳和华莱士的外卖电话是什么? 一文详解ISO/IEC20000信息技术服务管理体系认证好处、材料、流程 sqlserver存储过程怎么调试 去哪能学到正宗的杂粮煎饼薄脆做法 你认为小孩子可以看《羊脂球》吗? 煎饼里的脆饼做法 杂粮煎饼的脆饼怎么做 关于羊脂球的性格分析和故事所反映的社会现实 山东杂粮煎饼的脆饼怎么做 山东杂粮煎饼薄脆做法 羊脂球一共有多少个章节 贝多芬的详细资料 舌里全麦杂粮薄脆饼好吃吗? 羊脂球结构分析 乔治.桑是一个什么样的女人 一分钟了解羊脂球 怎样才可以让薄脆在做好的杂粮煎饼里保持酥脆? 开膛手杰克是不是真实存在的? 阅读下面一段文言文,翻译文中画线的句子。周宅丰... 杂粮煎饼怎么样才会脆? 羊脂球的摘要 有关贝多芬的资料 oppoa5玩香肠派对三指操控好不好操控? 库克的航海路线 node.js调用sqlserver的存储过程? java调用sqlserver存储过程问题 和男友种的爱情树怎么起名呢? 什么APP被封之后,抖音继位? 怎么从sqlserver的存储过程获得返回的数据 我把抖音卸载了。然后重新下一个。我的手机号登录... linux 脚本里面如何调用sqlserver存储过程 为什么继快手之后抖音可以火起来 sqlserver调用存储过程返回的结果集,怎么插入到临... 抖音还能“抖”多久? 爱情树是什么树?它真实的存在过吗? 在sqlserver存储过程如何通过条件来判断是否调用另... 为什么抖音停止视频后再继续就不行了? SQL2005 存储过程调用存储过程,求实例 爱情树要多少能量才能完全长大? 爱情树是什么样子的? esql中怎么动态调用存储过程? 华为p40锁屏时间位置怎么移动其他位置? sqlserver数据库 中写存储过程有什么好处:? 什么是爱情树