在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
最终效果
转载于:https://www.cnblogs.com/dunitian/p/4501268.html
在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?相关推荐
- [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)
原文地址:http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx[原文×××] [翻译]使用C#创建S ...
- SQL Server分页存储过程实践(图解)
下面来对SQL Server分页存储过程进行一下实做.图解成功的各个步骤. 一 找到大数据量的示例表 分页都是针对大记录数的表:反之有大记录数的表,可能就需要分页.例如银行用户表,就会上千万.下面先做 ...
- Sql Server 中存储过程的output return的区别
看http://zxianf.blog.163.com/blog/static/301207012009114104124969/中片关于Sql Server中存储过程output和return值的区 ...
- 实验8 SQL Server 的存储过程
实验8 SQL Server 的存储过程 一.实验目的 1.掌握使用T-SQL编程的方法 2.掌握使用T-SQL语句创建一个存储过程并验证 3.掌握创建和执行带参数的存储过程 4.熟练使用系统存储过程 ...
- 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...
作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...
- SQL Server数据库-存储过程(第一讲)
先上代码 --///[存储过程] --1.新建存储过程/*---检查是否存储过程是否已存在---*/ IF EXISTS (SELECT * FROM sysobjects WHERE name = ...
- SQL Server数据库存储过程——以自定义存储过程为例
SQL Server数据库存储过程--以自定义存储过程为例 1.什么是数据库存储过程 存储过程就是预编译SQL语句的集合,这些语句存储在一个名称下并作为一个单元处理.存储过程代替了传统的逐条执行SQL ...
- 使用SpringBoot+MybatisPlus框架的后端项目调用SQL Server的存储过程时报错
在使用SpringBoot+MybatisPlus框架的后端项目调用SQL Server的存储过程时报错: Mapper层xml中的代码为: 在命令行调用存储过程时,可以顺利执行,但是在mapper中 ...
- VB实现SQL Server 2000存储过程调用
VB实现SQL Server 2000存储过程调用 幸运好时机,注册赢手机 2005 三星yepp夏季数码旅游风 [文章信息] 作者: 刘兴权 陈奇 吴兵 刘雪松 时洪飞 时间: 2005-05-19 ...
最新文章
- Linux01-基本操作与Shell
- 京东涉足快递业加剧行业动乱
- 窄带信号和宽带信号的区别和联系
- win下svn常用操作笔记
- Python 基础 - Day 2 Learning Note - 字符转编码操作
- 我的vim配置---jeffy-vim-v2.3.tar
- hexo+github+hexo-theme-matery搭建个人免费博客
- PHP 中Cookie和Session的使用
- Android连接网络立即同步时区
- P4777 【模板】扩展中国剩余定理(EXCRT)
- Json 与 JS对象的关系与转换
- Flink SQL 系列 | 5 个 TableEnvironment 我该用哪个?
- cant find python executable_gyp ERR! stack Error: Can't find Python executable 'python'
- java jpa 教程 查询_Spring Boot JPA 使用教程
- UIApplication
- unity3d 人物对话_RPG角色对话编辑器系统RPG Conversation/Dialogue Editor 1.2.0
- Servlet3异步原理
- 生成 Bingo 卡片
- 简单的WGS84转UTM程序[C++]
- 历年诺贝尔生理学或医学奖
热门文章
- 关于cocos2d的下载和安装
- linux忘记root密码的两种修改方法
- DataTable、DataView、ListBox 数据绑定与查询
- 配置ISA Server 2006 ×××使用户轻松连接内网
- AndoridSQLite数据库开发基础教程(4)
- 网络数据包信息收集工具ferret-sidejack
- SQLite中特殊的INSERT语句
- rstudio怎么安装ggplot2_如何基于ggplot2构建相关系数矩阵热图
- oauth password模式_史上最干的Oauth案例分析
- c语言20字节的内存的数据怎么读取_C++编程-内存对齐