婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 不固定參數的存儲過程實現代碼

不固定參數的存儲過程實現代碼

熱門標簽:陜西電銷外呼系統好用嗎 al智能電話機器人 數字匠心電銷機器人 最新人工智能電銷機器人 沒聽見電話機器人幫你接 銀川高頻外呼回撥系統多少錢 如何做地圖標注圖鋪 成都電話外呼系統一般多少錢 蘭州語音外呼系統運營商
我想此時不妨使用字符串參數來幫助我們解決這種情況,利用字符串分割的方法將一個參數分割成數個參數來解決。下面我們看一個例子:

假設現在給你一個產品信息列表(顯示出各個商品的基本信息),現在我想要根據所選擇商品進行統計(任意選擇幾種),例如統計出價格10,11-20,21-30,31-40,41-50,50以上的商品個有多少個(姑且認為就統計這些)。此時如果使用存儲過程就勢必需要傳入所選商品的id作為參數,但是id個數是不固定的。此時估計會有人這樣寫:
復制代碼 代碼如下:

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(@ids) AND UnitPrice10

SELECT @elevenToTwenty=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(@ids) AND UnitPrice BETWEEN 11 AND 20

SELECT @twentyOneToThirty=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(@ids) AND UnitPrice BETWEEN 21 AND 30

SELECT @thirtyOneToFourty=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(@ids) AND UnitPrice BETWEEN 31 AND 40

SELECT @fourtyOneToFifty=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(@ids) AND UnitPrice BETWEEN 41 AND 50

SELECT @fiftyOrMore=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(@ids) AND UnitPrice>50

SELECT @followingTen AS '$10',@elevenToTwenty AS '$11-$20',
@twentyOneToThirty AS '$21-$30',@thirtyOneToFourty AS '$31-$40',
@fourtyOneToFifty AS '$41-$50',@fiftyOrMore AS '>$50'
END
GO

其實如果你測試一下(例如:EXEC dbo . StatProductInfo '3,4,8,10,22' )是有問題的,sql server認為這整個是一個參數,轉換時出錯。此時我們想一下如果這些字段在一個虛表中就容易操作多了,但是一般虛表是有其他表通過查詢得到,現在根本無法查詢又哪來的虛表呢?聰明的朋友或許已經想到可以使用"表值函數"。對,答案就是使用"表值函數"。我們知道"表值函數"可以返回一個"Table"類型的變量(相當于一張虛表,存放于內存中),我們首先將字符串分割存放到"表值函數"的一個字段中,然后我們再從"表值函數"中查詢就可以了(這個例子也是"表值函數"的一個典型應用)。具體sql如下:
復制代碼 代碼如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: cmj
-- Create date: 2010.11.05
-- Description: 返回一個Table,只有一列,每一行的數據就是分割好的字符串
-- =============================================
CREATE FUNCTION GetSplitFieldsByString
(
@toSplitString varchar(1000),
@splitChar varchar(10)
)
RETURNS
@tb TABLE(sp varchar(100))
AS
BEGIN
DECLARE @i INT
SET @toSplitString=RTRIM(LTRIM(@toSplitString))
SET @i=CHARINDEX(@splitChar,@toSplitString)
WHILE @i>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 UnitPrice10

SELECT @elevenToTwenty=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(SELECT sp FROM dbo.GetSplitFieldsByString(@ids,',')) AND UnitPrice BETWEEN 11 AND 20

SELECT @twentyOneToThirty=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(SELECT sp FROM dbo.GetSplitFieldsByString(@ids,',')) AND UnitPrice BETWEEN 21 AND 30

SELECT @thirtyOneToFourty=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(SELECT sp FROM dbo.GetSplitFieldsByString(@ids,',')) AND UnitPrice BETWEEN 31 AND 40

SELECT @fourtyOneToFifty=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(SELECT sp FROM dbo.GetSplitFieldsByString(@ids,',')) AND UnitPrice BETWEEN 41 AND 50

SELECT @fiftyOrMore=COUNT(*)
FROM dbo.Products
WHERE ProductID IN(SELECT sp FROM dbo.GetSplitFieldsByString(@ids,',')) AND UnitPrice>50

SELECT @followingTen AS '$10',@elevenToTwenty AS '$11-$20',@twentyOneToThirty AS '$21-$30',
@thirtyOneToFourty AS '$31-$40',@fourtyOneToFifty AS '$41-$50',@fiftyOrMore AS '>$50'
END
GO

這樣通過執行EXEC dbo . StatProductInfo '3,4,8,10,22' 就可以得到想要的結果了:

試試這樣會不會快一些
復制代碼 代碼如下:

SELECT SUM(CASE WHEN UnitPrice 10 THEN 1 ELSE 0 END) '$10',
SUM(CASE WHEN UnitPrice BETWEEN 11 AND 20 THEN 1 ELSE 0 END) '$11-$20',
SUM(CASE WHEN UnitPrice BETWEEN 21 AND 30 THEN 1 ELSE 0 END) '$21-$30',
...
SUM(CASE WHEN UnitPrice > 50 THEN 1 ELSE 0 END) '>$10'
FROM dbo.Products
WHERE ProductID IN(SELECT sp FROM dbo.GetSplitFieldsByString(@ids,','))

標簽:本溪 朔州 宜春 邢臺 遼源 鹽城 通化 巴彥淖爾

巨人網絡通訊聲明:本文標題《不固定參數的存儲過程實現代碼》,本文關鍵詞  不,固定,參數,的,存儲,過程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《不固定參數的存儲過程實現代碼》相關的同類信息!
  • 本頁收集關于不固定參數的存儲過程實現代碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色综合久久久久网| 成人午夜精品一区二区三区| 欧美在线观看视频一区二区 | 成人激情文学综合网| 国产成人h网站| 成人久久18免费网站麻豆| 日韩欧美123| 国产精品久久久久婷婷二区次| 国产精品进线69影院| 偷窥少妇高潮呻吟av久久免费 | 欧美日韩在线直播| 国产精品免费aⅴ片在线观看| 亚洲美女在线一区| 国产精品免费视频一区| 久久精品国产网站| 久久免费精品国产久精品久久久久 | 亚洲一区二区三区精品在线| 91精品国产综合久久香蕉麻豆| 亚洲国产精品久久久久婷婷884 | 国模套图日韩精品一区二区| 成人av片在线观看| 91成人在线观看喷潮| www国产成人免费观看视频 深夜成人网| 欧美日韩国产大片| 成人丝袜高跟foot| 蜜桃一区二区三区在线| 风间由美性色一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 91麻豆免费观看| 亚洲超碰精品一区二区| 欧美日本一道本在线视频| 国产一区二区不卡老阿姨| 国产iv一区二区三区| 国产精品网站一区| 99r精品视频| 国产精品高清亚洲| 精品卡一卡二卡三卡四在线| 成人精品一区二区三区四区| 亚洲综合在线五月| 在线播放亚洲一区| 成人av网站在线观看| 日韩高清欧美激情| 精品国产精品网麻豆系列| 午夜精品aaa| 亚洲免费资源在线播放| 亚洲一级在线观看| 色综合色狠狠综合色| 国产精品少妇自拍| 另类综合日韩欧美亚洲| 久久久精品日韩欧美| 中文天堂在线一区| 亚洲国产日韩精品| 国产精品看片你懂得| 日韩一区二区视频在线观看| 国产一区不卡在线| 亚洲欧美日韩小说| 亚洲精品老司机| 精品少妇一区二区三区日产乱码 | 懂色av一区二区三区蜜臀 | 狠狠色狠狠色综合日日91app| 国产精品色婷婷| 欧美一区二区三区视频| www.亚洲精品| 久久精品久久99精品久久| 日日夜夜精品视频天天综合网| 亚洲三级电影全部在线观看高清| 69堂精品视频| 91精品国产色综合久久ai换脸 | 久久女同性恋中文字幕| 欧美一级xxx| 在线欧美日韩精品| 美国十次了思思久久精品导航| 亚洲天堂成人在线观看| 91国产精品成人| 狠狠色丁香婷综合久久| 欧美日韩国产另类一区| 欧美日韩亚洲综合| 92精品国产成人观看免费| 91美女在线观看| 亚洲一区二区偷拍精品| 欧美国产精品劲爆| 欧美亚洲综合色| 午夜久久电影网| 91亚洲国产成人精品一区二三| 樱花影视一区二区| 国产精品青草综合久久久久99| 色先锋aa成人| 不卡的电视剧免费网站有什么| 麻豆91在线观看| 国产一区二区精品久久| 国产精品自产自拍| 狠狠色2019综合网| 日日嗨av一区二区三区四区| 亚洲一区欧美一区| 自拍偷拍欧美激情| 亚洲成年人网站在线观看| 亚洲高清免费观看| 久久国产精品99久久久久久老狼 | 亚洲午夜免费视频| 全国精品久久少妇| 国产老女人精品毛片久久| 成人午夜免费av| 裸体在线国模精品偷拍| 午夜视黄欧洲亚洲| 乱一区二区av| 美女被吸乳得到大胸91| 麻豆精品在线视频| 国产69精品久久久久777| 国产一区免费电影| 2023国产精品| 国产精品成人网| 久久亚洲综合色一区二区三区| 国产清纯在线一区二区www| 国产精品久线观看视频| 国产原创一区二区| 欧美专区亚洲专区| 欧美一区二区三区四区五区 | 国产欧美日韩另类一区| 91视频观看免费| 欧美精品tushy高清| 日韩视频免费直播| 国产日韩欧美高清在线| 国产在线国偷精品免费看| 国产一区不卡在线| 久久99国产精品免费| 午夜国产精品一区| 欧美mv日韩mv亚洲| 国产精品一区二区你懂的| 成人精品一区二区三区四区| 欧美日韩国产美| 国产精品久久久一本精品 | 成人免费高清在线| 樱桃国产成人精品视频| 激情综合亚洲精品| 国产精品一区三区| 成人av在线电影| 欧美一级一区二区| 日韩va欧美va亚洲va久久| 成人免费毛片高清视频| 欧美一级一区二区| 亚洲图片一区二区| 一区二区三区精品在线观看| 亚洲成a人v欧美综合天堂下载| 91麻豆精品国产91久久久更新时间| 亚洲人成精品久久久久久| 日韩高清欧美激情| 色综合久久久久综合| 国产色91在线| 美日韩黄色大片| 成人毛片视频在线观看| 在线观看网站黄不卡| 日韩欧美中文一区| 久久嫩草精品久久久精品一| 精品1区2区3区| 国产一区在线不卡| 久久成人久久鬼色| 奇米影视在线99精品| 91麻豆蜜桃一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 久久er99热精品一区二区| 国产成人精品www牛牛影视| 国产丝袜欧美中文另类| 日本最新不卡在线| 成人免费高清在线| 欧美日韩在线亚洲一区蜜芽| 国产日韩成人精品| 国产精品国产精品国产专区不蜜 | 久久免费电影网| 成人免费观看视频| 美洲天堂一区二卡三卡四卡视频| 国产91丝袜在线播放| 国产成人精品一区二区三区四区| 欧美成人三级电影在线| 久久久精品人体av艺术| 亚洲视频资源在线| 国产一区二区伦理| 欧美天堂一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲一二三区在线观看| 欧美午夜片在线看| 日韩av中文字幕一区二区三区| 91精品在线免费观看| 美日韩一区二区| 久久久精品蜜桃| 成人蜜臀av电影| 国产蜜臀av在线一区二区三区| 日韩av电影天堂| 精品国产精品网麻豆系列| 国产99久久久国产精品潘金网站| 日韩视频在线你懂得| 国产精品电影院| 成人国产精品免费网站| 亚洲久草在线视频| 懂色av一区二区三区免费看| 亚洲欧洲一区二区在线播放| www.亚洲色图.com| **性色生活片久久毛片| 91福利资源站| 亚洲成人www| 日韩精品一区国产麻豆|