黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Reporting Services 的多值參數究竟能否用在數

系統 2384 0

編寫映射到多值報表參數的查詢

您可以為要創建的任何報表參數定義多值參數。不過,如果要將多個參數值傳回查詢,則必須滿足下列要求:

  • 數據源必須為 SQL Server、Oracle 或 Analysis Services。
  • 數據源不能是存儲過程。Reporting Services 不支持將多值參數數組傳遞給存儲過程。
  • 查詢必須使用 IN 語句來指定參數。

MSDN有上述的描述,可見多值參數必須用于數據集查詢文本為Select ... Where XXXId in (@Parameters)的典型應用,

如果用到存儲過程就會報類型(ID參數是字符串型)無法轉換等錯誤;

如獲取數據為 exec dbo.pGetOrders @OrderID??? (存儲過程內容見如下代碼)

?

USE ? [ AdventureWorks ]
GO
SET ?ANSI_NULLS? ON
GO
SET ?QUOTED_IDENTIFIER? ON
GO

ALTER ? PROCEDURE ? [ dbo ] . [ spGetOrders ]
????
@OrderIDs ? varchar ( 500 )? = ? ''
AS
BEGIN
????
SET ?NOCOUNT? ON ;
????
????
DECLARE ? @sql ? varchar ( 500 )

????
SET ? @sql ? = ? ' SELECT?*?FROM?Sales.SalesOrderDetail ' ;
????
IF ? @OrderIDs ? <> ? '' ? SET ? @sql ? = ? @sql ? + ? ' ?WHERE?[SalesOrderID]?IN?( ' ? + ? @OrderIDs ? + ? ' ) ' ;
????
EXEC ?( @sql );
????
????
SET ?NOCOUNT? OFF ;
END ;

?

?

上面問題通過筆者反復琢磨,找到一種變通的辦法:

增加一個“內部”參數,將其設置為級聯參數(必須排列在上面提到的多值參數之后),如@InnerOrderIDs類型為String,可用值和默認值都設置為表達式如下:

=Join(Parameters!OrderID.Value,??", ")

然后修改獲取數據的SQL為 exec dbo.pGetOrders @InnerOrderIDs 就大功告成!

?

Reporting Services 的多值參數究竟能否用在數據集獲取途徑為存儲過程的情景呢?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論