中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣解析不固定參數的存儲過程

發布時間:2021-03-10 10:57:05 來源:億速云 閱讀:164 作者:小新 欄目:數據庫

小編給大家分享一下怎樣解析不固定參數的存儲過程,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

  如何解析不固定參數的存儲過程

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

SET ANSI_NULLS ON

  GO
  SET QUOTED_IDENTIFIER ON
  GO
  -- =============================================
  -- 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 UnitPrice<10 11="" 20="" 21="" 30="" 31="" 40="" 41="" 50="" select="" eleventotwenty="COUNT(*)" from="" dbo.products="" where="" productid="" and="" unitprice="" between="" twentyonetothirty="COUNT(*)" thirtyonetofourty="COUNT(*)" fourtyonetofifty="COUNT(*)" fiftyormore="COUNT(*)">50
  SELECT @followingTen AS '<$10 eleventotwenty="" as="" twentyonetothirty="" thirtyonetofourty="" fourtyonetofifty="" fiftyormore="">$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: 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 UnitPrice<10 11="" 20="" 21="" 30="" 31="" 40="" 41="" 50="" select="" eleventotwenty="COUNT(*)" from="" dbo.products="" where="" productid="" sp="" and="" unitprice="" between="" twentyonetothirty="COUNT(*)" thirtyonetofourty="COUNT(*)" fourtyonetofifty="COUNT(*)" fiftyormore="COUNT(*)">50
  SELECT @followingTen AS '<$10 eleventotwenty="" as="" twentyonetothirty="" thirtyonetofourty="" fourtyonetofifty="" fiftyormore="">$50'
  END
  GO

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

以上是“怎樣解析不固定參數的存儲過程”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

赤壁市| 纳雍县| 定兴县| 房产| 五家渠市| 浑源县| 道真| 额敏县| 永登县| 山西省| 文化| 汉阴县| 岐山县| 长泰县| 芜湖市| 永宁县| 高邮市| 雅安市| SHOW| 巴彦县| 汨罗市| 聂荣县| 搜索| 高尔夫| 通州区| 鄂尔多斯市| 武安市| 闵行区| 望奎县| 台山市| 鹰潭市| 新蔡县| 东台市| 新绛县| 县级市| 滨州市| 涿鹿县| 古蔺县| 中卫市| 钟山县| 西城区|