在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?
在sql server中建存储过程,如果需要参数是一个可变集合的处理
原存储过程,@objectIds 为可变参数,比如 110,98,99
ALTER PROC [dbo].[Proc_totalScore]
@categoryKey int,
@objectIds VARCHAR(MAX)
AS
BEGIN
SELECT c.Name,AVG(e.Score) Score FROM dbo.Sys_com_comment_main m
INNER JOIN dbo.sys_com_coment_extend e ON e.commentId=m.ID
INNER JOIN dbo.sys_com_category c ON e.NameKey=c.NameKey
WHERE m.categoryKey=@categoryKey AND m.dataStatus<>99 AND m.IsCheck=0 AND m.objectId IN(@objectIds)
GROUP BY c.Name
END
调用1:EXEC [Proc_totalScore] 99902,'110'
调用2:EXEC [Proc_totalScore] 99902,'110,97,87'
在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?
上网搜了一下大部分都是酱油贴,有网友说用xml的方式,具体的代码也没看见
折中一下,用sql拼接来实现可变参数的效果
先举个sql拼接的例子
DECLARE @sql NVARCHAR(MAX)
SET @sql ='select 1 mmd'
EXECUTE(@sql)
折中后的存储过程
ALTER PROC [dbo].[Proc_totalScore]
@categoryKey VARCHAR(100),
@objectIds VARCHAR(MAX)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)
SET @sql ='SELECT c.Name,AVG(e.Score) Score FROM dbo.Sys_com_comment_main m
INNER JOIN dbo.sys_com_coment_extend e ON e.commentId=m.ID
INNER JOIN dbo.sys_com_category c ON e.NameKey=c.NameKey
WHERE m.categoryKey='+@categoryKey+' AND m.dataStatus<>99 AND m.IsCheck=0 AND m.objectId IN('+@objectIds+')
GROUP BY c.Name'
EXECUTE(@sql)
END
最终效果
最新文章
- 如何阻止h5body的滑动
- [LintCode] 3Sum 三数之和
- 获取Repeater控件中的每一项数据
- (转)Linux下用mkisofs制作光盘镜像ISO文件
- [cocos2d]场景切换以及切换进度显示
- KDB调试内核
- Office2007图标变成白框,但是还能使用问题解决办法
- 排序算法——交换排序(冒泡排序、快速排序)(java)
- html行内元素,块元素,空元素
- MySQL意外关闭, 导致软件崩溃而无法启动的解决办法
- python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇(转载)
- kernel pwn 入门环境搭建
- Oracle使用PLSQL导入数据后中文乱码的解决方法
- 性能测试工具 Locust
- JavaSE回顾及巩固的自学之路(三)——————所有语言的都存在的基本运算
- SpringBoot2.0+Shiro+JWT 整合
- CentOS5.x、CentOS6.x 使用NFS及mount实现两台服务器间目录共享
- MAC apache服务器搭建
- maven 打包zip,jsw相关
- VMware NAT模式多个虚拟机相互访问
热门文章
- Javascript - Promise学习笔记
- C语言 &#183; 整数平均值
- linux基础学习笔记
- CGI与FastCGI nginx+PHP-FPM
- 推荐一个ASP.NET网站内容管理系统源码
- Exception in thread ";main"; java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<;init>;(I)V
- iOS之延时执行(睡眠)的几种方法
- 基于SOA架构的TDD测试驱动开发模式
- T-SQL 拆分使用指定分隔符的字符串(split string)
- 0042 MySQL学习笔记-入门--01