当前位置:  数据库>sqlserver

不固定参数的存储过程实现代码

    来源: 互联网  发布时间:2014-10-04

    本文导语:  我想此时不妨使用字符串参数来帮助我们解决这种情况,利用字符串分割的方法将一个参数分割成数个参数来解决。下面我们看一个例子: 假设现在给你一个产品信息列表(显示出各个商品的基本信息),现在我想要根据所...

我想此时不妨使用字符串参数来帮助我们解决这种情况,利用字符串分割的方法将一个参数分割成数个参数来解决。下面我们看一个例子:

假设现在给你一个产品信息列表(显示出各个商品的基本信息),现在我想要根据所选择商品进行统计(任意选择几种),例如统计出价格0
BEGIN
INSERT @tb VALUES(LEFT(@toSplitString,@i-1))
SET @toSplitString=RIGHT(@toSplitString,LEN(@toSplitString)-@i)
SET @i=CHARINDEX(@splitChar,@toSplitString)
END
IF LEN(@toSplitString)>0
INSERT @tb VALUES(@toSplitString)
RETURN
END
GO

然后我们稍微修改一下存储过程:
代码如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: jianxin160
-- Create date: 2010.11.05
-- Description: 统计商品
-- =============================================
ALTER PROCEDURE StatProductInfo
(
@ids VARCHAR(8000)
)
AS
BEGIN
DECLARE @followingTen INT
DECLARE @elevenToTwenty INT
DECLARE @twentyOneToThirty INT
DECLARE @thirtyOneToFourty INT
DECLARE @fourtyOneToFifty INT
DECLARE @fiftyOrMore INT

SELECT @followingTen=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(SELECT sp FROM dbo.GetSplitFieldsByString(@ids,',')) AND UnitPrice50

SELECT @followingTen AS '$50'
END
GO

这样通过执行EXEC dbo . StatProductInfo '3,4,8,10,22' 就可以得到想要的结果了:

试试这样会不会快一些
代码如下:

SELECT SUM(CASE WHEN UnitPrice < 10 THEN 1 ELSE 0 END) '$10'
FROM dbo.Products
WHERE ProductID IN(SELECT sp FROM dbo.GetSplitFieldsByString(@ids,','))

    
 
 

您可能感兴趣的文章:

  • mssql server 存储过程里,bulk insert table from '路径+文件',路径固定,文件名不固定的实现方法
  • shell 参数数目不固定如何遍历(主要原因是包含带空格的参数)
  • 发分了 急急 跪谢 100 分 需要从文件中每次读取 固定(通过参数传入)字节
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求助!怎样实现一个程序长期固定的在一块物理内存
  • jQuery导航/表头固定插件 Posfixed
  • 急,关于linux 分区问题,及如何使用固定ip
  • jquery实现的导航固定效果
  • 主机端口的固定
  • 如何固定JSplitPane的分隔比例??
  • 怎样让一个窗口显示在显示屏的固定位置?
  • 怎样固定JTabel中的列(column),而不让客户移动?高手快来!!!
  • 请问如何把每个进程固定在单独的CPU上
  • 求助~~哪位大神晓得如何固定tuxedo客户端与通信端的端口呀?
  • 如何为一台Linux服务器设置固定的IP地址?
  • 请教关于linux内存管理问题,如何给定义的变量指定固定内存段
  • mysql iis7站长之家
  • jquery 导航固定插件 ScrollToFixed
  • jquery 获取dom固定元素 添加样式的简单实例
  • 固定表格的高度超过指定高度就隐藏的方法
  • 请教:如何使一个数字,显示的时候要固定六位,不足的补0?????
  • java如何能定时(比如说0.1秒)执行一个固定的方法?
  • 怎么在linux下每搁固定时间执行程序
  • Linux下如何将一个文件cut为固定的长度?在已有文件句柄的情况下。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3