簡體   English   中英

多種價值和存儲過程

[英]mulit value and stored procedures

我查看了有關報表服務中多值選擇的其他問題,但沒有一個問題解決了我的問題。
我的問題是這個。 我有一個對參數-@Type進行查詢的報告。
按類型從類型表順序中選擇不同的(類型)

報表參數設置完畢,報表在選擇框中顯示所有返回的結果(當前為3)。

我的存儲過程具有以下子句:其中,鍵入(@Type)。 該報告僅返回選擇框中的第一個項目,而不是全部三個。

請協助。

謝謝!!!

我不確定多選列表框返回的格式或數據類型,但是如果是這樣的話:

X,Y,Z

您有兩個選擇(我更喜歡選擇1):

選項1
您可以在SQL Server 2005-使用數字表中使用數組和列表將其分開。 使用該代碼,您可以將字符串拆分為一個表,每個值都在其自己的行中。 然后,您可以將該表INNER JOIN到您的查詢中,並根據多個@Type值進行過濾。

選項2
在存儲過程中,您可以將查詢動態地構建為字符串。 然后,您可以執行(@YourString)並運行該查詢。 您的字符串如下所示:

SET @ QUERY ='選擇...從...位置...在('+ ISNULL(@Type,'')+')'

查看此鏈接Dynamic SQL的詛咒和祝福

我不認為可以執行IN(@type)語句。

IN必須以逗號分隔,我不相信您可以將@Type傳遞為“ 1,2,3”並使其起作用。

也許您可以將@Type變量解析到臨時表中,然后在臨時表上進行JOIN。 不過,這可能會有點慢。

我使用以下表變量函數將列表拆分為一個表,可以在IN'd中進行JOIN'd。

ALTER FUNCTION [dbo].[Split] ( @List nvarchar(4000), @SplitOn nvarchar(5) ) RETURNS @RtnValue table (
            Id int identity(1,1),   Value nvarchar(100) ) AS BEGIN  WHILE (Charindex(@SplitOn,@List)>0)         BEGIN           Insert Into @RtnValue (value)           Select Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))             Set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))         END     Insert Into @RtnValue (Value)   Select Value = ltrim(rtrim(@List))

    Return END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM