欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

創(chuàng)新互聯專注于企業(yè)成都營銷網站建設、網站重做改版、陵川網站定制設計、自適應品牌網站建設、H5高端網站建設商城系統(tǒng)網站開發(fā)、集團公司官網建設、外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為陵川等各大城市提供網站開發(fā)制作服務。

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

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

SET ANSI_NULLS ON

  GO
  SET QUOTED_IDENTIFIER ON
  GO
  -- =============================================
  -- Description: 統(tǒng)計商品
  -- =============================================

  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" 類型的變量(相當于一張?zhí)摫?,存放于內存?,我們首先將字符串分割存放到"表值函數"的一個字段中,然后我們再從"表值函數"中查詢就可以了(這個例子 也是"表值函數"的一個典型應用)。具體sql如下:

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

然后我們稍微修改一下存儲過程:

  SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO
  -- =============================================
  -- Author: jianxin160
  -- Create date: 2010.11.05
  -- Description: 統(tǒng)計商品
  -- =============================================
  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

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

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

分享名稱:怎樣解析不固定參數的存儲過程
標題URL:http://chinadenli.net/article12/ihcddc.html

成都網站建設公司_創(chuàng)新互聯,為您提供移動網站建設、建站公司動態(tài)網站、企業(yè)網站制作云服務器、網站內鏈

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

手機網站建設